Oralce查询语句执行函数先后问题
本帖最后由 assoloist 于 2012-11-07 21:07:00 编辑
SELECT usr_id from usertabel where usr_nam in
(select chr(39)||replace(per_dsc,',',chr(39)||','||chr(39))||chr(39)
FROM datatable where pkvalue=1088 )
如上述这个SQL查询语句,字段per_dsc里面放的是人名,中间用英文逗号隔开,如:张三,李四
然后如果单执行括号里面的查询,返回结果是:'张三','李四'
如果单单执行语句:
SELECT usr_id from usertabel where usr_nam in ('张三','李四')
返回结果是:ZHANGSAN LISI
但是连起来一次查询,就得不到任何结果。。。
是不是有执行函数先后顺序的问题呢?
------最佳解决方案--------------------','
------其他解决方案--------------------SELECT usr_id from usertabel where usr_nam in ('张三','李四')
后面in
是这样,是个集合:
select name from(select '张三' name from dual union all
select '李四' from dual )
而不是 select '张三,李四' from dual
------其他解决方案--------------------SELECT usr_id from usertabel where usr_nam in (select chr(39)
------其他解决方案--------------------replace(per_dsc,',',chr(39)
------其他解决方案--------------------chr(39))
------其他解决方案--------------------chr(39) FROM datatable where pkvalue=1088 )
相当于
SELECT usr_id from usertabel where usr_nam in ('''张三'',''李四''');-
当然查不到结果了