如何使用MySQL的REGEXP_LIKE函数及match_type 'n'?请提供示例
MySQL REGEXP_LIKE 中 match_type 'n' 的使用示例
MySQL的正则匹配函数(如REGEXP_LIKE)中,默认情况下正则表达式里的.元字符不会匹配行终止符(比如换行符\n),匹配会在行尾停止。而match_type参数设为'n'时,.将可以匹配包括行终止符在内的任意字符,实现跨行匹配。
具体示例
1. 准备测试数据
先创建测试表并插入包含换行的内容:
CREATE TABLE test_regex (id INT, content TEXT); INSERT INTO test_regex VALUES (1, '第一行\n第二行'), (2, '单行无换行内容');
2. 默认模式 vs 'n'模式对比
- 默认模式(不指定match_type):
.无法匹配换行符,跨行的正则规则不会命中
-- 尝试匹配包含换行的"第一行+换行+第二行",默认模式下无结果 SELECT * FROM test_regex WHERE REGEXP_LIKE(content, '第一行.第二行'); -- 返回结果:空集
- 使用'n'模式:
.可以匹配换行符,跨行规则生效
-- 指定'n'参数后,.匹配了中间的换行符,成功命中目标行 SELECT * FROM test_regex WHERE REGEXP_LIKE(content, '第一行.第二行', 'n'); -- 返回结果:id=1,content='第一行\n第二行'的记录
3. 匹配整个含换行的文本
-- 默认模式下,^.*$ 仅匹配单行内容,无法覆盖带换行的文本 SELECT REGEXP_LIKE('a\nb', '^.*$') AS default_result; -- 输出0(不匹配) -- 'n'模式下,^.*$ 会匹配包含换行的完整文本 SELECT REGEXP_LIKE('a\nb', '^.*$', 'n') AS n_mode_result; -- 输出1(匹配)
内容的提问来源于stack exchange,提问作者ArtBindu
相关产品推荐
相关产品推荐

