mysql必知必会(六):正则表达式过滤

1|0正则表达式


mysql仅支持多数正则表达式实现的一个很小的子集

2|0基本字符匹配


查询pro_name包含文本1000的所有行

SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;

image

查询prod_name中任意包含000的所有行
. 是正则表达式中的一个特殊字符

SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;

image

3|0进行OR匹配


| 表示或的关系
查询prod_name包含1000或者2000的所有行

SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;

image

4|0匹配几个字符之一


[] 表示匹配特定的字符,它表示一组字符,匹配任意一个。比如[123],是[1|2|3]的缩写

查询prod_name包含1 Ton或者2 Ton或者3 Ton的所有行

SELECT prod_name FROM products WHERE prod_name REGEXP '[123] Ton';

image

5|0匹配范围


集合可用来定义要匹配的一个或者多个字符,如匹配数字0到9,可写作[0-9]
查询prod_name包含1 Ton到5 Ton的所有行

SELECT prod_name FROM products WHERE prod_name REGEXP '[1-5] Ton' ORDER BY prod_name;

image

6|0匹配特殊字符


需要使用\转义
查询vend_name中包含 . 的字符的所有行

SELECT vend_name FROM vendors WHERE vend_name REGEXP '\\.' ORDER BY vend_name;

image

7|0匹配多个实例


重复元字符

元字符 说明
* 0个或多个匹配
+ 1个或者多个匹配(等于{1, } )
? 0个或1个匹配(等于{0, 1})
指定数目的匹配
不少于指定数目的匹配
匹配数目的范围(m不超过255)

查询出prod_name中包含1 stick和5 sticks的所有行
\( \) 匹配(),[0-9]匹配任意数字,sticks?匹配stick和sticks,s?表示s可选,出现0次或出现1次

SELECT prod_name FROM products WHERE prod_name REGEXP '\\([0-9] sticks?\\)' ORDER BY prod_name;

image

8|0定位符


定位元字符

元字符 说明
^ 文本的开始
$ 文本的结尾

查询以一个数(包括小数点开始的数)的所有产品

SELECT prod_name FROM products WHERE prod_name REGEXP '^[0-9\\.]' ORDER BY prod_name;

image


__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/16458870.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(265)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2018-07-08 阿里云上如何利用yum安装jenkins
2018-07-08 python之单元测试框架—unittest(补充)
点击右上角即可分享
微信分享提示