日期:2014-05-17  浏览次数:20971 次

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

从表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就不用了,请高手帮忙



------解决方案--------------------
不用in,用函数instr()

SQL code

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