MySQL正则表达式

正则表达式是用来匹配文本的特殊的串(字符集和)。比如从文本文件中提取电话号码。

基本字符匹配

SELECT name

FROM Customer

WHERE name REGEXP ‘li‘

LIKE与REGEXP之间的重要差别

SELECT Age

FROM Customer

WHERE Age REGEXP ‘16‘

SELECT Age

FROM Customer

WHERE Age LIKE‘1‘

如果执行这两个语句,LIKE不返回数据,REGEXP返回一行

LIKE匹配整个列,如果被匹配的文本仅在列值中出现,like将不会找到它,

而REGEXP在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到它

进行OR匹配

SELECT Age

FROM Customer

WHERE Age REGEXP ‘16|17‘

匹配几个字符之一

SELECT Name

FROM Customer

WHERE Name REGEXP ‘[123] Ton‘

[123]定义一组字符,它的意思是匹配1或2或3,因此,1 ton和2 ton都匹配且返回,

正如所见,[]是另一种形式的OR语句,[123]匹配字符1,2或3,但[^123]却匹配除去这些字符外的任何东西

匹配范围

集合可用来定义要匹配的一个或多个字符

[0123456789] 简化写法[0-9], 范围不限于完整的集合[3-8]或[2-9]也是合法的范围,此外范围不一定只是数值的,[a-z]匹配任意字母字符。

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘[1-3] Ton‘

匹配特殊字符

如何匹配有特殊含义的字符,如[]、 | 、.

为了匹配特殊字符必须用转义字符\\为前导,\\-表示查找-,\\.表示查找.

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘\\.‘

\\也用来引用元字符(具有特殊含义的字符)

\\f 换页

\\n换行

\\r回车

\\t制表

\\v纵向制表

匹配字符类

字符类
说明
[:alnum:] 任意字符和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符([a-zA-Z])
[:blank:] 空格和制表([同\\t])
[:cntrl:] ASCII控制符(ASCII 0到31 和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与print相同但不包括空格
[:lower:] 任意小写字符如[a-z]
[:print:] 任意可打印字符
[:punct:] 既不在 [:alnum:]又不在[:cntrl:]的字符
[:space:] 包含空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])
[:upper:] 任意大写字符(同[A-Z])
[:xdigit:]
任意十六进制数字([a-fA-F0-9])

匹配多个字符

前面使用的正则表达式都试图匹配单次出现,但有时需要对匹配的数目有更强的控制。

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

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘\\([0-9]\\ sticks?\\)‘

定位符

定位元字符
元字符 说明
^ 文本的开始
$ 文本的结束
[[:<:]] 词的开始
[[:>:]] 词的结尾

例如:

SELECT Name

FROM Customer

WHERE Name REGEXP ‘^[0-9\\.]‘

时间: 2024-12-08 12:34:33

MySQL正则表达式的相关文章

MySQL 正则表达式搜索

products表如下: 1. 基本字符匹配 使用正则表达式与LIKE的区别,正则表达式是在整个列搜索,只要prod_name中包含了所搜索的字符就可以了,而LIKE如果不用通配符,那么要求prod_name与搜索的字符要完全匹配:也就是说下面的例子,需要使用 LIKE 'JetPack 1000'才可以适配搜索到. 2 使用or进行匹配搜索,可以搜索两个条件,也可以连接多个条件: 3 匹配几个字符之一://这个的意思是说,匹配1 Ton 或者 2 Ton 或者 3 Ton 但是如果写成下面这样

mysql正则表达式及应用

mysql where子句的模式匹配 今天在应用中遇到了这样的一个问题,有一个字段 t1,其中的值类似于:1,1,1,2,3,3,4,4,5,5,2,4,3,2,1,2 需要从里面搜索出比如说:第一个逗号前的数字范围为3-5之间,第三个逗号前的数字的范围为3-5之间,第10个逗号前的数字范围为3-5之间,其余的都为1-5之间... 则sql语句可以这么写: SELECT * FROM tb WHERE t1 REGEXP '^[3-5],[1-5],[3-5],[1-5],[1-5],[1-5]

DB-MySQL:MySQL 正则表达式

ylbtech-DB-MySQL:MySQL 正则表达式 1.返回顶部 1. MySQL 正则表达式 在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似. 下表中的正则模式可应用于 REGEXP 操作符中. 模式 描述 ^ 匹配输入字符串的开始位置.如果设置了

使用MySQL正则表达式 __MySQL必知必会

正则表达式作用是匹配方本,将一个模式(正则表达式)与一个文本串进行比较. MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. MySQL仅支持多数正则表达式实现的一个很小的子集. ---------------------- 9.2.1  基本字符匹配 REGEXP后所跟的东西作为正则表达式处理. SELECT prod_nameFROM productsWHERE prod_name REGEXP '1000'ORDER BY prod

MySQL 正则表达式

在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配. MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配. 如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似. 下表中的正则模式可应用于 REGEXP 操作符中. 模式 描述 ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $

MySQL正则表达式 REGEXP详解

在开始这个话题之前我们首先来做一个小实验,比较一下REGEXP和Like他们两个哪个效率高,如果效率太低,我们就没有必要做过多的研究了,实验的代码如下:<?phpRequire("config.php");//函数:计时函数//用法:Echo Runtime(1);Function Runtime($mode=0){    Static $s;    IF(!$mode){        $s=microtime();        Return;    }    $e=micr

Mysql正则表达式基本字符类的匹配和多个实例的匹配

例子:  只打印包含数字的 这里的\\是转义字符  去掉\\不加括号也是对的 这只是小细节- -   个人认为表达[0-9]或者[\\.] 用一个表达或意思的'|'更为清楚 虽然是等价的- - 当然这里只是很基本的正则表达式  经常遇到很多更奇怪的需求  所以不要陷入代码细节吧  知道思路 等到需要用到的时候 去https://dev.mysql.com/doc/refman/5.7/en/查找相关资料或者谷歌别人是如何应用的 命令  真正急用的那个时候你将无比的强大 本文参考mysql必知必会

MySQL 正则表达式(待更新……)

在MySQL中,使用REGEXP关键字来匹配查询正则表达式,其基本形式如下: 字段名 REGEXP '匹配方式' 模式字符 含义              使用举例 ^ 匹配开头           SELECT `books` FROM `tb_name` WHERE `books` REGEXP '^php'; $ 匹配结尾           SELECT `books` FROM `tb_name` WHERE `books` REGEXP 'php$'; . 匹配任意一个字符    

使用MySQL正则表达式查询

MySQL用WHERE子句对正则表达式提供了初步的支持,允许你指定用正则表达式过滤SELECT检索出的数据. REGEXP后所跟的东西作为正则表达式处理. 代码 SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name; ------返回------ +------------------------+ | prod_name | +------------------------+ | Jet