MySQL - 用正则表达式进行搜索

本文介绍了MySQL中如何使用正则表达式进行复杂搜索。正则表达式是一种强大的文本匹配工具,MySQL虽然只支持其一小部分,但仍然能实现多种匹配方式,如基本字符匹配、OR操作、字符范围和特殊字符的转义。此外,还讲解了字符类和重复元字符的概念,帮助理解正则表达式在MySQL中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.正则表达式的介绍:

简单的过滤用WHERE就可以实现啦,但是对于复杂的过滤,一般采用正则表达式。

正则表达式是用来匹配文本的特殊的串(字符集合)。

所有种类的程序设计语言、文本编辑器、操作系统等都支持正则表达式。

2,MySQL正则表达式:正则表达式不区分大小写

    MySQL进支持正则表达式实现的一个很小的子集。

2.1基本字符匹配(REGEXP)

LIKE(通配符)和REGEXP(正则表达式)的区别:

    LIKE匹配整个列。如果被匹配的文本在列值中出现,LIKE将找不到,相应的行也不会被返回。而REGEXp在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP就能找到它,相应的行将被返回。

example:

        

2.2 进行OR匹配(|)


2.3 匹配几个字符之一  [] 是另一种形式的OR语句。

指定一组用中括号[]括起来的字符来完成。[123]表示匹配1 或者2 或者3


2.4匹配范围

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

example: [0123456789] == [0-9] (等价)

2.5匹配特殊字符

为了匹配特殊字符,必须使用\\ 为前导。 \\也可以用来引用元字符。    \\- 表示查找-, \\ .表示查找.

\\ f    换页

\\n    换行

\\r    回车

\\t    指标

\\v    纵向制表。

2.6匹配字符类

字符类:(前后都有冒号

[:alnum:]    任意字母和数字(同[a-z A-Z 0-9])

[:alpha:]    任意字符(同[a-z A-Z])

[:blank:]    空格和制表(= \\t)

[:cntrl:]    ASCII控制字符(ASCII 0到31 和127)

[:digit:]    任意数字(同0-9)

[:graph:]    与[:print:] 相同,但不包括空格

[:print :]    任意可打印字符

[:punct:]    既不在[:alnum:] 又不在[:cntrl:]  中的任意字符

[:lower:]    任意小写字母(同[a-z])

[:upper:]    任意大写字母(同[A-Z])

[:xdigit:]    任意十六进制数字(同[a-f A-F 0-9])

[:space:]    包括空格在内的任意空白字符

2.7匹配多个实例:(重复元字符

等价关系:

  ==

2.8定位符

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值