1、函数介绍
REGEXP_LIKE 函数在功能上与 LIKE 函数非常相似。 然而,虽然 LIKE 允许简单的字符串匹配搜索,但 REGEXP_LIKE 函数非常强大,因为除了字符串匹配搜索之外,它还可以使用正则表达式。 REGEXP_LIKE 可以按如下方式使用。
REGEXP_LIKE ( string , pattern [, match] )
REGEXP_LIKE ( 检索对象 , 检索字符 [, 检索参数] )
' 'i':不区分大小写
'c':区分大小写
'n':将换行符与“n”句点 (.) 匹配
'm':将搜索目标视为多行,并将“^”和“$”匹配到每行的开头和结尾。
进行测试之前先创建表
1 2 3 4 5 6 7 8 |
|
2、使用此函数不区分大小写
2-1、LIKE 函数
1 2 3 4 5 6 |
|
查询结果:
message_val
--------------------------------------------------
Data Discrepancy needs to be fixed.
I am in desperate NEED of money.
I really NeeD you forever.
2-2、REGEXP_LIKE 函数
1 2 3 4 5 6 |
|
查询结果
message_val_regexp_like
--------------------------------------------------
DATA Discrepancy needs TO be fixed.
I am IN desperate NEED OF money.
I really NeeD you forever.
3、多条件
3-1、多个OR条件时,LIKE函数就不能满足需求了。
1 2 3 4 5 6 7 8 9 |
|
查询结果
message_val_regexp_like
--------------------------------------------------
I am IN desperate NEED OF money.
I really NeeD you forever.
3-2、AND :既有A又有B
1 2 3 4 5 6 7 8 |
|
检索结果
message_val_regexp_like
--------------------------------------------------
I really NeeD you forever.
3-3、检索以某个字符串开头的数据
1 2 3 4 5 6 7 8 9 |
|
检索结果
message_val_regexp_like
--------------------------------------------------
I really NeeD you forever.
3-4、检索以某个字符串结尾的数据
1 2 3 4 5 6 7 8 9 |
|
检索结果
message_val_regexp_like
--------------------------------------------------
I am IN desperate NEED OF money.
补充:oracle模糊查询中的regexp_like嵌套子查询用法
oracle模糊查询中的regexp_like嵌套子查询用法
regexp_like一般用于模糊查询某一列时包含多个查询条件
需求1:在用户表中查询出账号包含650000和230000的用户。
1 |
|
以上的写法等同于下面的写法:
1 |
|
需求2:在另一张表中查询出所需条件(查询条件为另一个表的结果集),并在用户表中以该条件模糊查询对应的用户信息。
即在sys_org表中查出类型为1的orgid并以此结果在sys_user表中查询出对应的账号信息。
1 |
|
解决思路:
若是以此结果集进行查询会报错:“单行子查询返回多行”
1、将结果集显示成一列。所用函数:wm_concat(列名)
注:wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行,即“行转列”
1 |
|
2、将结果集用 | 分隔
1 |
|
3、查询条件并已完成,用 regexp_like查询出所需信息即可
1 |
|