MySQL正则表达式(上)

文摘   2024-09-19 20:30   广东  

点击关注上方“数据前线”,

设为“置顶或星标”,第一时间送达干货

正则表达式的作用
正则表达式也叫做匹配模式(Pattern),它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。

正则表达式的语法
SELECT 
column1, 
column2, 
...  
FROM table_name 
WHERE columnN REGEXP pattern;
正则表达式的关键字是REGEXP,后面接需要进行匹配的文本。

示例数据库
我们以customers表的数据为例:
表customers

简单的字符匹配
查找地址中含有12的记录,可以使用如下SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '12'


结果为:

这和我们前面章节学的LIKE感觉没有多大区别,但是仔细看你会发现,如果直接把REGEXP换成LIKE是查找不到任何数据的,必须添加通配符'%'才可以实现相同功能。

这就是正则表达式REGEXP和LIKE的一个非常大的区别:
REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现, REGEXP将会找到它,相应的行将被返回 。

我们再看下面一个例子


SELECT * FROM customers
WHERE 地址 REGEXP '12.'


结果为:
这里多了一个 .,它是正则表达式中的特殊字符。它表示匹配任意一个字符,类似LIKE里面的_

OR匹配
查找地址中包含12或者17的记录,可以使用如下SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '12|17'


结果为:
这里的 | 也是正则表达式中的特殊字符,表示或者的意思,类似OR语句。

匹配指定字符中的任意一个
查找地址中包含"京","城","道"中的任意一个,可以这样写SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '[京城道]'


结果为:
这里的 [] 也是正则表达式中的特殊字符,也是或者的意思。

匹配范围
当我们要匹配某个范围的的数据时,例如0123456789,可以简写成[0-9],
这里的特殊字符 -,表示某个区间的值。
查找地址中包含3-9的记录,可以这样写SQL:


SELECT * FROM customers
WHERE 地址 REGEXP '[3-9]'


结果为:
此外区间范围的不止有数值,字母也可以,例如[a-z],[A-Z]。

正则表达式内容较多,今天先介绍到这里,下一章我们再讲解剩余内容。

给大家推荐一下我们的GPT 4.0/4o/o1-preview系统,
一次性买了200多个Plus会员放在这个系统的池子里,

无需梯子即可直连,费用还比官网便宜一半,包售后

更多介绍点击这里

每月仅需88元!

扫码加我微信购买,备注:GPT

每天仅需一瓶可乐钱

数据前线
专注数据领域,主要分享SQL,数据分析,Python,大数据,AI,人工智能,职场,面试等相关技术内容,关注回复「1024」获取资源大礼包。
 最新文章