MySQL中REGEXP正则表达式的使用示例

  介绍

这篇文章将为大家详细讲解有关MySQL中REGEXP正则表达式的使用示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

正则表达式描述了一组字符串。最简单的正则表达式是不含任何特殊字符的正则表达式。例如,正则表达式你好匹配你好。

非平凡的正则表达式采用了特殊的特定结构,从而使得它们能够与1个以上的字符串匹配。例如,正则表达式喂|单词匹配字符串你好或字符串字。

作为一个更为复杂的示例,正则表达式B[一]* s匹配下述字符串中的任何一个:香蕉、Baaaaas, B,以及以B开始,以年代结束,并在其中包含任意数目或n字符的任何其他字符串。

以下是可用于随REGEXP操作符的表的模式。

 MySQL中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(表示匹配)

MySQL中REGEXP正则表达式的使用示例