REGEXP_LIKE 函数在功能上与 LIKE 函数非常相似。 然而,虽然 LIKE 允许简单的字符串匹配搜索,但 REGEXP_LIKE 函数非常强大,因为除了字符串匹配搜索之外,它还可以使用正则表达式。 REGEXP_LIKE 可以按如下方式使用。
REGEXP_LIKE ( string , pattern [, match] )
REGEXP_LIKE ( 检索对象 , 检索字符 [, 检索参数] )
' 'i':不区分大小写
'c':区分大小写
'n':将换行符与“n”句点 (.) 匹配
'm':将搜索目标视为多行,并将“^”和“$”匹配到每行的开头和结尾。
进行测试之前先创建表
CREATE TABLE test_table_regexp_like
(
message_val VARCHAR2(50) NOT NULL
);
INSERT INTO test_table_regexp_like VALUES ('Data Discrepancy needs to be fixed.');
INSERT INTO test_table_regexp_like VALUES ('I am in desperate NEED of money.');
INSERT INTO test_table_regexp_like VALUES ('I really NeeD you forever.');
2、使用此函数不区分大小写
2-1、LIKE 函数
SELECT
message_val AS message_val_like
FROM
test_table_regexp_like
WHERE
LOWER(message_val) LIKE '%need%';
查询结果:
message_val
--------------------------------------------------
Data Discrepancy needs to be fixed.
I am in desperate NEED of money.
I really NeeD you forever.
2-2、REGEXP_LIKE 函数
SELECT
message_val AS message_val_regexp_like
FROM
test_table_regexp_like
WHERE
REGEXP_LIKE(message_val, 'need', 'i');
查询结果
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函数就不能满足需求了。
-- 包含 am 或者 NeeD 的数据
-- ”|“ 作用 = or
SELECT
message_val AS message_val_regexp_like
FROM
test_table_regexp_like
WHERE
REGEXP_LIKE(message_val, 'am|NeeD');
查询结果
message_val_regexp_like
--------------------------------------------------
I am IN desperate NEED OF money.
I really NeeD you forever.
3-2、AND :既有A又有B
-- AND 条件 ("really" 和 "you" 都包含的)
-- "()|()" = AND
SELECT
message_val AS message_val_regexp_like
FROM
test_table_regexp_like
WHERE
REGEXP_LIKE(message_val, '(really)|(you)');
检索结果
message_val_regexp_like
--------------------------------------------------
I really NeeD you forever.
3-3、检索以某个字符串开头的数据
-- 以 "I" 开头,中间有 "you" 的字符串。
-- "^" 字符串首位
-- ".*" 任意字符串
SELECT
message_val AS message_val_regexp_like
FROM
test_table_regexp_like
WHERE
REGEXP_LIKE(message_val, '^I.*you.*');
检索结果
message_val_regexp_like
--------------------------------------------------
I really NeeD you forever.
3-4、检索以某个字符串结尾的数据
-- 以 "I" 开头、以 "money." 结尾的字符串
-- "^" :字符串首位
-- "$" :字符串末尾
SELECT
message_val AS message_val_regexp_like
FROM
test_table_regexp_like
WHERE
REGEXP_LIKE(message_val, '^I.*money.$');
检索结果
message_val_regexp_like
--------------------------------------------------
I am IN desperate NEED OF money.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)