MySQL数据库操作DQL正则表达式

前言:
正则表达式(regular expression)描述了一种字符串匹配的规则,正则表达式本身就是一个字符串,使用这个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串 。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本 。
mysql通过regexp关键字支持正则表达式进行字符串匹配 。

-- ^ 在字符串开始处进行匹配select 'abc' regexp '^a'; -- 1-- $ 在字符串末尾开始匹配select 'abc' regexp 'a$'; -- 0select 'abc' regexp 'c$'; -- 1-- . 匹配任意字符select 'abc' regexp '.b'; -- 1select 'abc' regexp '.c'; -- 1select 'abc' regexp 'a.'; -- 1-- [...] 匹配括号内的任意单个字符select 'abc' regexp '[xyz]'; -- 0select 'abc' regexp '[xaz]'; -- 1返回值为1就代表匹配到了,如果返回值为0就代表不能匹配
-- [^...] 注意^符合只有在[]内才是取反的意思,在别的地方都是表示开始处匹配select 'a' regexp '[^abc]';-- 0select 'x' regexp '[^abc]';-- 1select 'abc' regexp '[^a]';-- 1使用[^]则代表的是,不能匹配到,那么有些人肯定会疑问,为什么最后一个却匹配到了,虽然里面包含a,但是[^a]代表的是,除了a,里面还有其他的,也可以匹配成功,这里其实涉及到了一个单词中的全匹配和局部匹配 。
负值字符集合 。匹配未包含的任意字符 。例如,'[^abc]' 可以匹配 "plain" 中的'p'
-- a* 匹配0个或多个a,包括空字符串 。可以作为占位符使用.有没有指定字符都可以匹配到数据select 'stab' regexp '.ta*b';select 'stb' regexp '.ta*b';select '' regexp 'a*';注意这里的*是0个或者多个,所以最后一个返回的是1
-- a+ 匹配1个或者多个a,但是不包括空字符select 'stab' regexp '.ta+b';select 'stb' regexp '.ta+b';注意这里的+是1个或者多个
-- a? 匹配0个或者1个aselect 'stb' regexp '.ta?b';select 'stab' regexp '.ta?b';select 'staab' regexp '.ta?b';-- a1|a2 匹配a1或者a2,select 'a' regexp 'a|b';select 'b' regexp 'a|b';select 'b' regexp '^(a|b)';select 'a' regexp '^(a|b)';select 'c' regexp '^(a|b)';-- a{m} 匹配m个aselect 'auuuuc' regexp 'au{4}c';select 'auuuuc' regexp 'au{3}c';注意这里的?是0个或者1个,标准的名字叫做非贪婪模式
-- a{m,n} 匹配m到n个a,包含m和nselect 'auuuuc' regexp 'au{3,5}c';select 'auuuuc' regexp 'au{4,5}c';select 'auuuuc' regexp 'au{5,10}c';-- (abc) abc作为一个序列匹配,不用括号括起来都是用单个字符去匹配,如果要把多个字符作为一个整体去匹配就需要用到括号,所以括号适合上面的所有情况 。select 'xababy' regexp 'x(abab)y';select 'xababy' regexp 'x(ab)*y';select 'xababy' regexp 'x(ab){1,2}y';一般的实际应用场景,通过正则表达式可以对文本进行匹配,这比之前的like关键字要智能的多,应用场景也是比较的广,所以需要熟悉它的语法标准:
select 字段 regexp '正则表达式' as 命名 from 表   ……
【MySQL数据库操作DQL正则表达式】到此这篇关于mysql数据库操作dql正则表达式的文章就介绍到这了,更多相关mysql数据库操作dql 内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

    推荐阅读