对于Oralce查询得到的结果集,同所拼出来的字符串之间怎样的换转?
如下:
SELECT *
FROM t
WHERE t.colA in
(SELECT case when ext2 = 'A' or ext2 = 'BC'
then '''A' ||''','''|| 'BC''' --如果ext2为A或者BC,则返回A与BC的组合
when ext2 = 'D' or ext2 = 'E'
then '''D' ||''','''|| 'E''' --如果ext2为D或者E,则返回D与E的组合
else ext2 end case --其他情况
FROM t2 WHERE 传入的参数)
该语句的需求是:对于传入的参数(可以确定只会返回一行),在表t2中查询ext2列,如果ext2值为A或者BC,则返回A 和BC,如果为D或者E,则返回D和E,其他情况是什么则返回什么。
然后把返回的结果集用于查询表t。
对于嵌套查询语句
SELECT case when ext2 = 'A' or ext2 = 'BC'
then '''A' ||''','''|| 'BC''' --如果ext2为A或者BC,则返回A与BC的组合
when ext2 = 'D' or ext2 = 'E'
then '''D' ||''','''|| 'E''' --如果ext2为D或者E,则返回D与E的组合
else ext2 end case --其他情况
FROM t2 WHERE 传入的参数
其查询结果为'D','E'
但是外部查询无值,如果把该嵌套查询语句改为'D','E',即整个查询语句为:
SELECT *
FROM t
WHERE t.colA in
('D','E')
则可以得到要查询的结果。
请问,我如何才能把嵌套查询得到的结果集转换成字符串的'D','E',或者,该查询,还有什么其他写法,谢谢!
------解决方案--------------------
--试试这个SQL
SELECT *
FROM t
WHERE
(SELECT case when ext2 = 'A' or ext2 = 'BC'
then ',A'
------解决方案--------------------
','
------解决方案--------------------
'BC,' --如果ext2为A或者BC,则返回A与BC的组合
when ext2 = 'D' or ext2 = 'E'
then ',D'
------解决方案--------------------
','
------解决方案--------------------
'E,' --如果ext2为D或者E,则返回D与E的组合
else ','
------解决方案--------------------
ext2
------解决方案--------------------
',' end case --其他情况
FROM t2 WHERE 传入的参数)
like '%,'
------解决方案--------------------
t.colA
------解决方案--------------------
',%'