例如这样的语句:
select * from tableName A where A.code like '101%' or A.code like '102%'
想把它写成IN子句的,比如这样:
select * from tableName A where A.code In ('101%','102%')
当然上面这样写法是不正确的,但是就是这个意思,有哪位大侠帮忙给个正确的写法?小弟先谢过了...
select * from tableName A where A.code like '101%' or A.code like '102%'
想把它写成IN子句的,比如这样:
select * from tableName A where A.code In ('101%','102%')
当然上面这样写法是不正确的,但是就是这个意思,有哪位大侠帮忙给个正确的写法?小弟先谢过了...
解决方案 »
- 关于9i下物化视图刷新组中添加视图的问题,一直解决不了,请有经验的朋友进来看一下
- 学pl/sql的好资料,哪个有呢?
- rollback为何导致cursor关闭
- 请教:proc的编译问题????一个很久都没找到答案的问题!!!
- 请问Varchar2 和Number 做主键的效率,能相差多少呢
- 可不可以用一个sql 语句来实现啊?
- 在存储过程中如何copy一个文件呢?
- 如何在linux下自动启动Oracle9i???急急急急急!!在线给分!!!!
- 突然看到我从前写的一个备份Oracle的批处理程序,简直太搞笑了,今天与大家分享一下……
- weblogic异常java.sql.SQLException: weblogic.rmi.extensions.RemoteRuntimeException
- 不用SQL语句建表问题
- 用select如何通过行的索引进行操作?
*
FROM
tableName
WHERE
SUBSTR(A.code, 1, 3) IN ('101', '102')
*
FROM
tableName
WHERE
SUBSTR(A.code, 1, 3) IN ('101', '102')
这个方法是可以的,意思是从字符串的第一个位置截取字符,取三个字符,跟字符长短没有什么关系
你有个数据是111002
明显不符合要求的
但用你的SUBSTR就会符合要求了
你说的这个不行的.比如就取前三位来说,我可能条件是101,102,1001,如果按照这个做法,语句应该是
SELECT
*
FROM
tableName
WHERE
SUBSTR(A.code, 1, 3) IN ('101', '102','100')喽,但是这样就有可能把前4位是1002的记录也带出来了,所以说不太可行哦.
from tableName A ,(SELECT DECODE (INSTR (:in_str, ',', 1, 1),
0, :in_str,
SUBSTR (:in_str,
DECODE (ROWNUM,
1, 1,
INSTR (:in_str,
',',
1,
ROWNUM - 1
)
+ 1
),
DECODE (ROWNUM,
1, INSTR (:in_str, ',', 1, 1) - 1,
LENGTH (:in_str)
- LENGTH (REPLACE (:in_str,
',',
''
)
)
+ 1, LENGTH (:in_str),
INSTR (:in_str, ',', 1, ROWNUM)
- 1
- INSTR (:in_str,
',',
1,
ROWNUM - 1
)
)
)
) in_str
FROM DUAL
CONNECT BY ROWNUM <=
LENGTH (:in_str)
- LENGTH (REPLACE (:in_str, ',', ''))
+ 1) b
where instr(a.code,b.in_str,1)>0 你把这段SQL去试试
其中的
:in_str 用'101,102'代替,不用加%
我想hebo2005的意思是将所有的条件做成一个结果集,相当于一个子查询,然后将其和要查询的表进行关联。
而在利用INSTR(A.code,结果集.XXX)> 0来过滤数据。
和'101%'还有差别的
或者用
substr(a.code,1,length(b.in_str))=b.in_str
这样就是开头匹配的
select A.* from
tableName A,
(
select column_value as CODE from table(str_tb('101','102'))
) B
where A.CODE like B.CODE || '%'
create table table1
as
select a.code from tablename where acode like '101%' or A.code like '102%' ;
然后通过IN 语句来实现
select * from tablename a where a.code in (select to_char(a.code) from table1)
Execute Immediate ' select * from tableName A where ' || f_GetCondition(pi_sColName,pi_ConValue);
在f_GetCondition 里面用循环来时条件的组装