这篇文章将为大家详细讲解有关MySQL中REGEXP正则表达式的使用示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
正则表达式描述了一组字符串。最简单的正则表达式是不含任何特殊字符的正则表达式。例如,正则表达式你好匹配你好。
非平凡的正则表达式采用了特殊的特定结构,从而使得它们能够与1个以上的字符串匹配。例如,正则表达式喂|单词匹配字符串你好或字符串字。
作为一个更为复杂的示例,正则表达式B[一]* s匹配下述字符串中的任何一个:香蕉、Baaaaas, B,以及以B开始,以年代结束,并在其中包含任意数目或n字符的任何其他字符串。
以下是可用于随REGEXP操作符的表的模式。
应用示例,查找用户表中邮件格式错误的用户记录:
SELECT *, 得到用户 WHERE email  NOT REGEXP & # 39; ^ [a - z0 - 9. - _ %] + @ (- z0 - 9.) +。[a - z] {2,4} $ & # 39;
MySQL数据库中正则表达式的语法,主要包括各种符号的含义。
<强>(^)字符强>
匹配字符串的开始位置,如“^”表示以字一开母头的字符串。
mysql>, select & # 39; xxxyyy& # 39;, REGEXP & # 39; ^ xx # 39;; +-----------------------+ |,& # 39;xxxyyy& # 39;, regexp & # 39; ^ xx # 39; | +-----------------------+ |,,,,,,,,,,,1 | +-----------------------+ 1,row set 拷贝;(0.00,sec)
查询xxxyyy字符串中是否以xx开头,结果值为1,表示值为true,满足条件。
<强>($)字符强>
匹配字符串的结束位置,如“X ^”表示以字母X结尾的字符串。
<>强(。)字符强>
这个字符就是英文下的点,它匹配任何一个字符,包括回车,换行等。
<强>(*)字符强>
星号匹配0个或多个字符,在它之前必须有内容。如:
mysql>, select & # 39; xxxyyy& # 39;, regexp & # 39; x * & # 39;;
这个sql语句,正则匹配为真的。
<>强(+)字符强>
加号匹配一个或多个字符,在它之前也必须有内容。加号跟星号的用法类似,只是星号允许出现0次,加号则必须至少出现一次。
<强>(?)字符强>
问号匹配0次或1次。
实例:
现在根据上面的表,可以装置各种不同类型的sql查询以满足要求。在这里列出一些理解。考虑我们有一个表为person_tbl和有一个字段名为名称:
查询找到所有的名字以& # 39;圣# 39;开头
mysql>, select name 得到person_tbl WHERE name regexp & # 39; ^圣# 39;;
查询找到所有的名字以& # 39;好# 39;结尾
mysql>, select name 得到person_tbl WHERE name regexp & # 39;好$ & # 39;;
查询找到所有的名字包函& # 39;3 # 39;的字符串
mysql>, select name 得到person_tbl WHERE name regexp & # 39; 3 # 39;;
查询找到所有名称以元音开始和& # 39;好# 39;结束的
mysql>, select name 得到person_tbl WHERE name regexp & # 39; ^(五个母音字母)|好$ & # 39;;
一个正则表达式中的可以使用以下保留字
<强> ^ 强>
所匹配的字符串以后面的字符串开头
mysql>, select “fonfo", regexp “^ fo“美元,→,0(表示不匹配), mysql>, select “fofo", REGEXP “^ fo",,,, 1(表示匹配)
<强> $ 强>
所匹配的字符串以前面的字符串结尾
mysql>, select “fono", REGEXP “^ fono“美元;,→,1(表示匹配), mysql>, select “fono", REGEXP “^ fo“美元,→,0(表示不匹配), 。
匹配任何字符(包括新行)
mysql>, select “fofo", REGEXP “^ f。*“,→, 1(表示匹配), mysql>, select “fonfo", REGEXP “^ f。*,,,,, 1(表示匹配)
<强> a * 强>
匹配任意多一个(包括空串)
mysql>, select “Ban", REGEXP “^英航* n";,→, 1(表示匹配), mysql>, select “Baaan", REGEXP “^英航* n";,→, 1(表示匹配), mysql>, select “Bn", REGEXP “^英航* n";,→, 1(表示匹配)