怎样将字符串str 123;345;678字符串转成in()里面需要的形式

时间:2023-01-06 19:44:18

从表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


引用 1 楼  的回复:
用动态SQL加以解决,或写个函数!

。。。。。。。。

#3


要把
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


学习,阅并致谢!
引用 5 楼  的回复:
不用in,用函数instr()


SQL code

SELECT C.ID,C.NAME  FROM  C WHERE 
instr( ( SELECT ';'||ID||';'  FROM A ),';'|| C.ID||';')>0;

#1


用动态SQL加以解决,或写个函数!

#2


引用 1 楼  的回复:
用动态SQL加以解决,或写个函数!

。。。。。。。。

#3


要把
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


学习,阅并致谢!
引用 5 楼  的回复:
不用in,用函数instr()


SQL code

SELECT C.ID,C.NAME  FROM  C WHERE 
instr( ( SELECT ';'||ID||';'  FROM A ),';'|| C.ID||';')>0;