oracle模糊查询中的regexp_like嵌套子查询用法

oracle模糊查询中的regexp_like嵌套子查询用法

regexp_like一般用于模糊查询某一列时包含多个查询条件
需求1:在用户表中查询出账号包含650000和230000的用户。

select * from sys_user where regexp_like(account,'650000|230000')

以上的写法等同于下面的写法:

select * from sys_user where account like '%650000%'  or account like'%230000%'

需求2:在另一张表中查询出所需条件(查询条件为另一个表的结果集),并在用户表中以该条件模糊查询对应的用户信息。
即在sys_org表中查出类型为1的orgid并以此结果在sys_user表中查询出对应的账号信息。

select fullname,account from sys_user where  REGEXP_LIKE (account,(select replace(wm_concat(orgid),',','|') from (select orgid from  sys_org where orgtype = '1' order by orgid )))

解决思路:
若是以此结果集进行查询会报错:“单行子查询返回多行”
1、将结果集显示成一列。所用函数:wm_concat(列名)
注:wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,即“行转列”

select wm_concat(orgid) from (select orgid from  sys_org where orgtype = '1' order by orgid )

在这里插入图片描述
2、将结果集用 | 分隔

select replace(wm_concat(orgid),',','|') from (select orgid from  sys_org where orgtype = '1' order by orgid )

在这里插入图片描述
3、查询条件并已完成,用 regexp_like查询出所需信息即可

select fullname,account from sys_user where  REGEXP_LIKE (account,(select replace(wm_concat(orgid),',','|') from (select orgid from  sys_org where orgtype = '1' order by orgid )))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值