旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

关于MySQL中REGEXP正则表达式运用小结【MySQL教程】,REGEXP,MySQL,表达式

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:89评论:0


导读:之前我要查找数据都是运用like厥后发明mysql中也有正则表达式了而且觉得机能要好过like,下面我来给人人分享一下mysqlREGEXP正则表达式运用详解,愿望此要领对人人有...
之前我要查找数据都是运用like厥后发明mysql中也有正则表达式了而且觉得机能要好过like,下面我来给人人分享一下mysql REGEXP正则表达式运用详解,愿望此要领对人人有协助。

正则表达式形貌了一组字符串。最简朴的正则表达式是不含任何特别字符的正则表达式。比方,正则表达式hello婚配hello。

非寻常的正则表达式采用了特别的特定构造,从而使得它们能够与1个以上的字符串婚配。比方,正则表达式hello|word婚配字符串hello或字符串word。

作为一个更加庞杂的示例,正则表达式B[an]*s婚配下述字符串中的任何一个:Bananas,Baaaaas,Bs,以及以B最先、以s完毕、并在个中包含恣意数量a或n字符的任何其他字符串。

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

运用示例,查找用户表中Email花样毛病的用户纪录:


SELECT * 
FROM users
WHERE email NOT REGEXP '^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$'

MySQL数据库中正则表达式的语法,重要包含种种标记的寄义。

(^)字符

婚配字符串的最先位置,如“^a”示意以字母a开首的字符串。


mysql> select 'xxxyyy' regexp '^xx';

+-----------------------+
| 'xxxyyy' regexp '^xx' |
+-----------------------+
|           1 |
+-----------------------+
1 row in set (0.00 sec)

查询xxxyyy字符串中是不是以xx开首,效果值为1,示意值为true,满足前提。

($)字符

婚配字符串的完毕位置,如“X^”示意以字母X末端的字符串。

(.)字符

这个字符就是英文下的点,它婚配任何一个字符,包含回车、换行等。

(*)字符

星号婚配0个或多个字符,在它之前必需有内容。如:


mysql> select 'xxxyyy' regexp 'x*';

这个SQL语句,正则婚配为true。

(+)字符

加号婚配1个或多个字符,在它之前也必需有内容。加号跟星号的用法相似,只是星号许可涌现0次,加号则必需最少涌现一次。

(?)字符

问号婚配0次或1次。

实例:

如今依据上面的表,能够装配种种不同类型的SQL查询以满足要求。在这里列出一些明白。斟酌我们有一个表为person_tbl和有一个字段名为称号:

查询找到一切的名字以'st'开首


mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查询找到一切的名字以'ok'末端


mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查询找到一切的名字包函'mar'的字符串


mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查询找到一切称号以元音最先和'ok'完毕 的


mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

一个正则表达式中的能够运用以下保留字

^

所婚配的字符串今背面的字符串开首


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*

婚配恣意多个a(包含空串)


mysql> select "Ban" REGEXP "^Ba*n"; -> 1(示意婚配) 
mysql> select "Baaan" REGEXP "^Ba*n"; -> 1(示意婚配) 
mysql> select "Bn" REGEXP "^Ba*n"; -> 1(示意婚配)

a+

婚配恣意多个a(不包含空串)


mysql> select "Ban" REGEXP "^Ba+n"; -> 1(示意婚配) 
mysql> select "Bn" REGEXP "^Ba+n"; -> 0(示意不婚配)

a?

婚配一个或零个a


mysql> select "Bn" REGEXP "^Ba?n"; -> 1(示意婚配) 
mysql> select "Ban" REGEXP "^Ba?n"; -> 1(示意婚配) 
mysql> select "Baan" REGEXP "^Ba?n"; -> 0(示意不婚配)

de|abc

婚配de或abc


mysql> select "pi" REGEXP "pi|apa"; -> 1(示意婚配) 
mysql> select "axe" REGEXP "pi|apa"; -> 0(示意不婚配) 
mysql> select "apa" REGEXP "pi|apa"; -> 1(示意婚配) 
mysql> select "apa" REGEXP "^(pi|apa)$"; -> 1(示意婚配) 
mysql> select "pi" REGEXP "^(pi|apa)$"; -> 1(示意婚配) 
mysql> select "pix" REGEXP "^(pi|apa)$"; -> 0(示意不婚配)

(abc)*

婚配恣意多个abc(包含空串)


mysql> select "pi" REGEXP "^(pi)*$"; -> 1(示意婚配) 
mysql> select "pip" REGEXP "^(pi)*$"; -> 0(示意不婚配) 
mysql> select "pipi" REGEXP "^(pi)*$"; -> 1(示意婚配)

{1}
{2,3}

这是一个更全面的要领,它能够完成前面好几种保留字的功用

a*

能够写成a{0,}

a+

能够写成a{1,}

a?

能够写成a{0,1}

   在{}内只要一个整型参数i,示意字符只能涌现i次;在{}内有一个整型参数i,背面跟一个“,”,示意字符能够涌现i次或i次以上;在{}内只要一个整型参数i,背面跟一个“,”,再跟一个整型参数j,示意字符只能涌现i次以上,j次以下(包含i次和j次)。个中的整型参数必需大于即是0,小于即是 RE_DUP_MAX(默许是255)。 如果有两个参数,第二个必需大于即是第一个

[a-dX]

婚配“a”、“b”、“c”、“d”或“X”

[^a-dX]

婚配除“a”、“b”、“c”、“d”、“X”之外的任何字符。

“[”、“]”必需成对运用

mysql> select "aXbc" REGEXP "[a-dXYZ]"; -> 1(示意婚配) 
mysql> select "aXbc" REGEXP "^[a-dXYZ]$"; -> 0(示意不婚配) 
mysql> select "aXbc" REGEXP "^[a-dXYZ]+$"; -> 1(示意婚配) 
mysql> select "aXbc" REGEXP "^[^a-dXYZ]+$"; -> 0(示意不婚配) 
mysql> select "gheis" REGEXP "^[^a-dXYZ]+$"; -> 1(示意婚配) 
mysql> select "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0(示意不婚配)

相干引荐:

JS正则表达式圆满完成身份证校验功用

怎样用正则表达式让JavaScript的代码高亮

javascript婚配js中解释的正则表达式代码

以上就是关于MySQL中REGEXP正则表达式运用小结的细致内容,更多请关注ki4网别的相干文章!

标签:REGEXPMySQL表达式


欢迎 发表评论: