MySQL基础知识——正则表达式(上)

445 阅读3分钟

点击上方SQL数据库开发,关注获取SQL视频教程\

SQL专栏

SQL基础知识汇总

SQL高级知识汇总'

正则表达式的作用

正则表达式也叫做匹配模式(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]。

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

——End——
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。
推荐阅读
5个免费在线 SQL 数据库环境

我司空降了一名专家后,一半程序员疯了...

一款免费比Navicat还要好用,功能强大的数据库管理工具

GitHub上最励志的计算机自学教程

刚刚用华为鸿蒙跑了个“hello world”!
这是一个能学到技术的公众号,欢迎关注

点击「阅读原文」了解SQL训练营