1. REGEXP和LIKE
LIKE匹配整个列,REGEXP在列值内进行匹配;
通过^和$定位符,REGEXP可以实现和LIKE一样的功能
2. 匹配任意一个字符
SELECT prod_name
FROM products
WHERE prod_name REGEXP '.000'
ORDER BY prod_name;
'.000'将匹配 前面一个任意字符后接000
如何要强制区分大小写可以使用BINARY
SELECT prod_name
FROM products
WHERE prod_name REGEXP BINARY 'JetPack .000'
3. OR匹配
SELECT prod_name
FROM products
WHERE prod_name REGEXP '1000|2000'
ORDER BY prod_name;
4. 匹配几个字符之一
SELECT prod_name
FROM products
WHERE prod_name REGEXP '[123] Ton'
ORDER BY prod_name;
匹配1或2或3,接一个空格,再接Ton的字符串
取反情况[^123]表示匹配除1、2、3之外的其他任意字符
5. 范围匹配
SELECT prod_name
FROM products
WHERE prod_name REGEXP '[1-5] Ton'
ORDER BY prod_name;
6. 匹配特殊字符
SELECT vend_name
FROM products
WHERE vend_name REGEXP '\\.'
ORDER BY prod_name;
通过\\加特殊字符(. | [ ] \等)匹配这些特殊字符
7. 常见匹配字符类
[:alnum:] | 任意字母数字 |
[:alpha:] | 任意字母 |
[:digit:] | 任意数字 |
[:lower:] | 任意小写字母 |
[:upper:] | 任意大写字母 |
8. 匹配多个实例
接在字符后面
* | 0个或多个匹配 |
+ | 1个或多个匹配 |
? | 0个或1个匹配 |
{n} | n个匹配 |
{n, } | 不少于n个匹配 |
{n,m} | 匹配数量在[n,m]内 |
SELECT prod_name
FROM products
WHERE prod_name REGEXP '\\([0-9] sticks?\\)'
ORDER BY prod_name;
SELECT prod_name
FROM products
WHERE prod_name REGEXP '[[:digit:]]{4}'
ORDRE BY prod_name;
9. 定位符
^ | 文本开始 |
$ | 文本结束 |
[[:<:]] | 词的开始 |
[[:>:]] | 词的结束 |
SELECT prod_name
FROM products
WHERE prod_name REGEXP '^[0-9\\.]'
ORDER BY prod_name;