从表A的ID字段查出如下结果
SELECT A.ID FROM A;
------------------
123;456;789
现在有表C 需要这样的sql
SELECT C.ID,C.NAME ...FROM C WHERE C.ID IN ( SELECT ID FROM A );
可是 SELECT ID FROM A 根本不是我们 正确 in()需要的 一行n列的格式
怎样将 SELECT ID FROM A 查询出的id搞成 一行n列的格式 。
例如 in ('123','456','789')
我写过一个函数getStr() 函数返回 就是'123','456','789' 这个字符串,但是将函数放入in (getStr()) 这样却查不查结果,
之所以发到oracle开发贴 就是想用oracle 搞,java就不用了,请高手帮忙
8 个解决方案
#1
用动态SQL加以解决,或写个函数!
#2
。。。。。。。。
#3
要把
123;456;789
分割成
123
456
678 ?
123;456;789
分割成
123
456
678 ?
#4
分割成 in括号里 需要的格式, 但是我不知道 是啥格式.....
#5
不用in,用函数instr()
SELECT C.ID,C.NAME FROM C WHERE
instr( ( SELECT ';'||ID||';' FROM A ),';'|| C.ID||';')>0;
#6
5楼多谢
#7
我之前遇到时我自己的处理方法是用replace把“;”变成“,”,然后用动态SQL,求高人指教
#8
学习,阅并致谢!
#1
用动态SQL加以解决,或写个函数!
#2
。。。。。。。。
#3
要把
123;456;789
分割成
123
456
678 ?
123;456;789
分割成
123
456
678 ?
#4
分割成 in括号里 需要的格式, 但是我不知道 是啥格式.....
#5
不用in,用函数instr()
SELECT C.ID,C.NAME FROM C WHERE
instr( ( SELECT ';'||ID||';' FROM A ),';'|| C.ID||';')>0;
#6
5楼多谢
#7
我之前遇到时我自己的处理方法是用replace把“;”变成“,”,然后用动态SQL,求高人指教
#8
学习,阅并致谢!