首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

oracle数据库in语句中用regexp_replace的有关问题

2012-07-29 
oracle数据库in语句中用regexp_replace的问题在oracle数据库中编写sql语句select * from User where userN

oracle数据库in语句中用regexp_replace的问题
在oracle数据库中编写sql语句

select * from User where userName in ('a1','a2','a2') 

这样是可以查询出结果,但如果使用

select * from User where userName in (
select regexp_replace('''a1#a2#a3''','#',''',''') as tt from dual

确没有结果。  

请问应该如何处理?

传来的参数是 a1#a2#a3 这种格式

[解决办法]
好象是中文括号的问题,

[解决办法]
select t.* from "USER" t
where t.UserName in (
select REGEXP_SUBSTR('a1#a2#a3','[^#]+',1,ROWNUM) AS s
from dual
CONNECT BY ROWNUM<=3)
因为前端程序肯定知道拼接时的个数,只需要把最后一行中的3换成变量即可

[解决办法]
实际上我不主张使用拼接字符串传递,你可以使用PL_TABLE来传递,避免字符串拼接和解释,特别的,如果字符串很大,对效率很影响的,至于如何使用PL_TABLE可以查阅相关文档。

热点排行