Mysql的正则匹配与常用匹配符_Mysql必知必会学习记录01


可以通过 REGEXP进行正则匹配,与like用法类似, BINARY可以区分大小写匹配:
SELECT  *  FROM  `mytable` Where   name  REGEXP 'name'
' [123] aA' ' Aa . 001 | 002'
[123] 表示1或2或3
[^123] 表示除了1 2 3
[0-9] 表示1 2 3 4 5 6 7 8 9 等价于 [0123456789] 同理 [a-z] 也可以
. 表示任意一个字符
| 表示取两者之一,有或者的意思
\\ 表示转义 如查找 . 则为: \\.
* 表示前面出现任意次数 'Aa*' 可以匹配包含 Aa
+ 表示前面出现大于一次 'Aa+' 其中 A 无法匹配
? 表示前面出现0次或者1次相当于{0,1} 'Aa?' 其中 Aaa 无法匹配
{n} 表示前面出现n次 'Aa{2} ' 只能匹配 Aaa
{m,n} 表示前面出现最少m次最多n次,其中m<n. 'Aa{1,2} ' 可以匹配 Aa Aaa

空白元字符
\\f
\\n 换行
\\r 回车
\\t 制表
\\v 纵向制表

定位符
^ 文本开始
$ 文本结束
[[:<:]] 词开始
[[:>:]] 词结束
例如: ^[0-9] 表示文本以数字开头的文本
在不适用数据库的前提下也可以使用正则表达式,返回 1(匹配) 0(不匹配)
如: SELECT  'hello'  REGEXP '[0-9]' 返回 0

使用的时候需要外面加[],
SELECT  *  FROM  `table` Where   name  REGEXP '[[:digit:]]'
匹配字符类
说明
[:alnum:]
任意字母和数字(同[a-zA-Z0-9])
[:alpha:]
任意字母(同[a-zA-Z])
[:blank:]
空格和制表(同[\\t])
[:cntrl:]
ASCII控制字符(ASCII0到31和127)
[:digit:]
任意数字(同[0-9])
[:graph:]
[[:print:]]相同,但不包含空格
[:lower:]
任意小写字母(同[a-z])
[:print:]
任意可打印字符
[:punct:]
即不在 [[:alnum:]]又不在[[:cntrl:]]中的字符
[:space:]
包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])
[:upper:]
任意大写字母(同[A-Z])
[:xdigit:]
任意16进制数字(同[a-fA-F0-9])


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值