- REGEXP
REGEXP告诉MySQL,其后跟的东西为正则表达式
【1】基本字符匹配
- .
匹配任意一个字符
SELECT number
FROM accounts
where number REGEXP '00.';
查找表accounts中包含00,以及其后跟一个任意字符的number
——————————————————————————————-
LIKE和REGEXP的一个重要差别!!!!!!
SELECT birthdate
FROM accounts
where birthdate REGEXP '1998';
SELECT birthdate
FROM accounts
where birthdate LIKE '1998';
LIKE匹配整个列,如果1998只是出现在列中,那么LIKE不会返回;
REGEXP在列值内匹配,即只要出现了1998,REGEXP就会返回。
——————————————————————————————-
【2】进行OR匹配
- |
搜索两个串之一
SELECT birthdate
FROM accounts
where birthdate REGEXP '1998|1999';
搜索表accounts中出现1998或1999的birthdate
【3】匹配几个字符之一
- [abc]
匹配[]中的a或b或c
SELECT phone
FROM accounts
where phone REGEXP '15[09]';
查找表accounts中包含150或159的phone
字符集合可以被否定,在集合的开始处放置一个^即可:
[123]匹配1、2或3
[^123]匹配除了这些字符之外的
【4】匹配范围
- -
假如要匹配数字0到9,即[0123456789],可用-来定义一个范围:[0-9]
【5】匹配特殊字符
- 两个\
匹配特殊字符,用两个\为前导,这种处理就是所谓的转义。
【6】匹配字符类
【7】匹配多个实例
【8】定位符
前面都是任意位置的匹配,如果需要匹配特定位置的文本,需要使用定位符
元字符 | 说明 |
---|---|
^ | 文本的开始 |
$ | 文本的结尾 |
[[:<:]] | 词的开始 |
[[:>:]] | 词的结尾 |