1. 正则表达式运算符

expression NOT REGEXP pattern, expression NOT RLIKE pattern expression REGEXP pattern, expression RLIKE pattern 如果表达式expression匹配给定模式pattern返回1,否则返回0. 如果表达式expression或者模式pattern为NULL,则返回NULL RLIKE和REGEXP一样.

2. 正则表达式语法

^
 
匹配字符串开始
 
mysql> SELECT 'fo\nfo' REGEXP '^fo$';                   -> 0
mysql> SELECT 'fofo' REGEXP '^fo';                      -> 1
$
 
匹配字符串结束
 
mysql> SELECT 'fo\no' REGEXP '^fo\no$';                 -> 1
mysql> SELECT 'fo\no' REGEXP '^fo$';                    -> 0
.
 
匹配任意一个字符 (包括回车和换行符)
 
mysql> SELECT 'fofo' REGEXP '^f.*$';                    -> 1
mysql> SELECT 'fo\r\nfo' REGEXP '^f.*$';                -> 1
a*
 
匹配零个或者多个字符a
 
mysql> SELECT 'Ban' REGEXP '^Ba*n';                     -> 1
mysql> SELECT 'Baaan' REGEXP '^Ba*n';                   -> 1
mysql> SELECT 'Bn' REGEXP '^Ba*n';                      -> 1
a+
 
匹配一个或者多个字符a
 
mysql> SELECT 'Ban' REGEXP '^Ba+n';                     -> 1
mysql> SELECT 'Bn' REGEXP '^Ba+n';                      -> 0
a?
 
匹配零个或者一个字符a
 
mysql> SELECT 'Bn' REGEXP '^Ba?n';                      -> 1
mysql> SELECT 'Ban' REGEXP '^Ba?n';                     -> 1
mysql> SELECT 'Baan' REGEXP '^Ba?n';                    -> 0
de|abc
 
匹配de或者abc
 
mysql> SELECT 'pi' REGEXP 'pi|apa';                     -> 1
mysql> SELECT 'axe' REGEXP 'pi|apa';                    -> 0
mysql> SELECT 'apa' REGEXP 'pi|apa';                    -> 1
mysql> SELECT 'apa' REGEXP '^(pi|apa)$';                -> 1
mysql> SELECT 'pi' REGEXP '^(pi|apa)$';                 -> 1
mysql> SELECT 'pix' REGEXP '^(pi|apa)$';                -> 0
(abc)*
 
匹配零个或者多个abc
 
mysql> SELECT 'pi' REGEXP '^(pi)*$';                    -> 1
mysql> SELECT 'pipi' REGEXP '^(pi)*$';                  -> 1
mysql> SELECT 'pipipi' REGEXP '^(pi)*$';                -> 1
mysql> SELECT 'pipipx' REGEXP '^(pi)*$';                -> 0
{1}, {2,3}
 
{n}和{m,n}符号提供了更加一般性的多种情况匹配的正则表达式规则,其中m和n都是整数
a*可以写为a{0,}
a+可以写为a{1,}
a?可以写为a{0,1}
 
具体来讲,a{n}匹配恰好n个字符a,a{n,}匹配n个或者多个字符a,a{m,n}匹配m到n个字符a,包括n个字符a。如果同时给出m和n,则m必须小于或等于n。
 
mysql> SELECT 'abcde' REGEXP 'a[bcd]{2}e';              -> 0
mysql> SELECT 'abcde' REGEXP 'a[bcd]{3}e';              -> 1
mysql> SELECT 'abcde' REGEXP 'a[bcd]{1,10}e';           -> 1
[a-dX], [^a-dX]
 
匹配在/不在[a,b,c,d,X]内的任意字符
注意:此处[^a-dX]表示不在[a,b,c,d,X]内的任意字符,注意与^区分
 
mysql> SELECT 'aXbc' REGEXP '[a-dXYZ]';                 -> 1
mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]$';               -> 0
mysql> SELECT 'aXbc' REGEXP '^[a-dXYZ]+$';              -> 1
mysql> SELECT 'aXbc' REGEXP '^[^a-dXYZ]+$';             -> 0
mysql> SELECT 'gheis' REGEXP '^[^a-dXYZ]+$';            -> 1
mysql> SELECT 'gheisa' REGEXP '^[^a-dXYZ]+$';           -> 0
[.多个字符.]
 
SQL中允许的字符匹配有一张【名称-字符】映射表,不常见的字符匹配都可以在这里找到
网址为https://dev.mysql.com/doc/refman/5.7/en/regexp.html#regexp-operators
 
举几个例子:
1. 匹配换行
mysql> SELECT 'newline\nnewline' REGEXP '[[.newline.]]';
mysql> SELECT 'newline\nnewline' REGEXP '[[.\n.]]';
2. 匹配回车
mysql> SELECT 'enter\tenter' REGEXP '[[.carriage-return.]]';
mysql> SELECT 'enter\tenter' REGEXP '[[.\r.]]';
3. 匹配Tab键
mysql> SELECT 'tab\ntab' REGEXP '[[.tab.]]';
mysql> SELECT 'tab\ntab' REGEXP '[[.\t.]]';
4. 匹配&符号
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.ampersand.]]';
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.&.]]';
5. 匹配?符号
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.question-mark.]]';
mysql> SELECT 'https://www.baidu.com/s?tn=hao_pg&ie=utf-8' REGEXP '[[.\n.]]';
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql