Oracle系列---【REGEXP_LIKE函数的使用】

发布时间 2023-06-20 19:45:52作者: 少年攻城狮

REGEXP_LIKE函数的使用

REGEXP_LIKE函数的使用场景

oracle中有两张表,一张叫A_PACKAGE,另一张叫A_RULE,两张表通过PACKAGE_ID关联。其中,A_PACKAGE表中有一个字段channelId,存储的是'B,C,PUB'格式的(多个channelId用逗号隔开),现在已知channelId='B',如何根据'B'查找符合条件的A_RULE?
思路:
1.使用REGEXP_LIKE函数查出符合条件的PACKAGE_ID;
2.再通过JOIN或者子查询查出符合条件的A_RULE中的数据。

解决方案

# xml中的sql
select * from A_RULE where PACKAGE_ID IN 
(SELECT DISTINCT PACKAGE_ID FROM A_PACKAGE WHERE REGEXP_LIKE(channelId,'(^|,)${param.orgId}($|,)'))

# oracle中的sql
select * from A_RULE where PACKAGE_ID IN 
(SELECT DISTINCT PACKAGE_ID FROM A_PACKAGE WHERE REGEXP_LIKE(channelId,'(^|,)B($|,)'))

# 注意
(^|,):表示以B开头或','开头;
($|,):表示以B结尾或','结尾。