当前位置: 代码迷 >> Oracle开发 >> select的结果集怎么转换成字符串
  详细解决方案

select的结果集怎么转换成字符串

热度:31   发布时间:2016-04-24 06:40:20.0
select的结果集如何转换成字符串
本帖最后由 roofwei 于 2014-07-03 21:39:05 编辑
对于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
------解决方案--------------------
',%'
  相关解决方案