视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Mysqlsql语句回顾2--正则表达式_MySQL
2020-11-09 19:42:08 责编:小采
文档


在这里简单回顾一下mysql在过滤数据的时候正则表达式的用法,主要是每个用法给一个例子,或者加一些简短的说明。

这里要提前说一下,使用正则表达式过滤数据是用 REGEXP关键字

基本字符匹配:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000’;

该查询语句的意思是prod_name字段中包含1000的数据,只要值中的任何部位包含1000都可以

SELECT prod_name FROM products WHERE prod_name REGEXP ‘.000’;

"."代表的是单个字符的通配符,相当于任何单个字符,类似LIKE中的通配符"_"一样,该语句的意思是查询处prod_name字段中包含诸如1000,2000,或者任意一个字符后边跟上000的数据

进行OR匹配:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘1000|2000’;

在这里“|”代表or的意思,也就是“或”的意思,该语句会吧prod_name字段中包含1000或者包含2000或者两个都包含的数据查询出来,or匹配可以给出两个以上的匹配项例如 1000|2000|3000

匹配几个字符之一:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘[123] Ton’;

[]括起来的部分表示匹配其中一个例如 1 Ton ,2 Ton 这样

匹配范围:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘[1-9] Ton’;

如果在上一个例子中[]括起来的部分的字符比较长,而且都是数组,并且数字又是连续的话,可以改成范围匹配,这样sql语句会更加简短一点,当然可以把[1-9]换成[1234567],如果是字母的话可是使用[a-z]这样的方式

匹配特殊字符:

SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\.’;

在mysql中要匹配特殊字符的话需要加上//转义一下才可以,因为特殊字符在sql语句中有特殊的含义

匹配多个实例:

首先需要介绍几个匹配字符

* 0个或者多个匹配

+ 一个或者多个匹配(等于{1,})

? 0个或者一个匹配(等于{0,1})

{n} 指定数目的匹配

{n,} 不少于指定数目的匹配

{n,m} 匹配数目的范围(m不超过255)

SELECT prod_name FROM products WHERE prod_name REGEXP ‘\\([0-9] sticks?\\)’;

在该语句中?匹配它前面的任何字符的0次或者一次出现

定位符:

^ 匹配文本的开始

$ 匹配文本的结尾

[[:<:]] 词的开始

[[:>:]] 词的结尾

SELECT prod_name FROM products WHERE prod_name REGEXP ‘^[0-9\\.]’;

该匹配字符串的意思是只有以.和任意数字为开头的数据被查询

下载本文
显示全文
专题