我有个select语句sql1 : select * from abc where id like 'dddd%'其中dddd是我sql2 : select id from ccc 的结果集例如:如果我sql2的结果是('22','33','44')
sql1就是 select * from abc where id like 22,或者like 33,或者like 44like有没有类似于 select id in('aa','bb','cc')的方法?
我有没有办法将两个sql语句写到一起?
sql1就是 select * from abc where id like 22,或者like 33,或者like 44like有没有类似于 select id in('aa','bb','cc')的方法?
我有没有办法将两个sql语句写到一起?
解决方案 »
- 参照一张表,更新另外一张.请支持,在线等待
- 关于blob字段数据恢复的问题
- 这句是什么 意思 ?? 送分
- Oracle10g,双击安装就提示临时文件夹不能写,出错.
- 请问在SQL PLUS中执行一个存储过程,其中有问题,请问用什么命令现实是多少行出错,或者错误信息?
- 数据库记录查找问题
- 请高手帮我分析一下那些原因可导至数据变慢???
- 怪问题,sql plus中的查询结果和DBA Studio中显示不同!
- 查询语句中DISTINCT的用法是什么样?
- 解决送2000分错误:ORA-03106: 致命的双任务通信协议错
- Oracle 9i与10g上运行Select Count(*)为何相关好多时间?
- Oracle XE 如何升级3.0
还想要简单点
几种方法
一种是用OR LIKE
一种是把这个字符串分拆成一个结果集
然后再比较
http://topic.csdn.net/u/20080829/15/d74ed512-8307-4a7b-8977-f147201b98ea.html
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 a.code like b.in_str||'%'
for(int i=1;i<a.length;i++){
or like 'a[i]%'
}当然就是大概这个意思,这么写当然不对,改一下
select abc.* from abc,ccc where substr(abc.id,1,length(ccc.id))=ccc.id
用这个函数可以实现ALTER FUNCTION cstr(@TparaStr VARCHAR(8000))
RETURNS @TmpTab TABLE(ListStr varchar(8000))
AS
BEGINDECLARE @m VARCHAR(8000)
DECLARE @i INT
DECLARE @Y INT
DECLARE @N VARCHAR(8000)
DECLARE @Item VARCHAR(8000)
DECLARE @GROUPid varchar(8000)
DECLARE @TPARA VARCHAR(8000)
-- select @GROUPid=isnull(pname,'') from tpara where tbname='费用基数' and pno =@TparaStr
set @GROUPid=@TparaStr
-- SET @GROUPid = @TparaStr
SET @I = 0
SET @Y = 0
SET @Item = ''
set @n = ''
set @m = ''
WHILE @Y <= LEN(@GROUPid)
BEGIN
IF SUBSTRING(@GROUPid,@Y,1) =','
BEGIN
SET @M = @Y
END
IF @M <> 0
BEGIN
SET @item = SUBSTRING(@GROUPid, @n + 1, @m - 1 - @n)
SET @n = @m
SET @m = 0
INSERT into @TmpTab(ListStr)values(@item)
END
SET @Y = @Y + 1
IF @y > LEN(@GROUPid)
BREAK
ELSE
CONTINUE
END
RETURN
END