MariaDB 正则表达式
除了通常在LIKE子句中可用的模式匹配外,MariaDB还通过REGEXP运算符提供基于正则表达式的匹配。该运算符根据给定的模式对字符串表达式进行模式匹配。
MariaDB 10.0.5引入了PCRE正则表达式,极大地扩展了匹配范围,包括递归模式、向前断言等。
请查看下面给出的标准REGEXP运算符语法的用法。
SELECT column FROM table_name WHERE column REGEXP '[PATTERN]';
REGEXP 在模式匹配时返回1,如果没有匹配则返回0。
反向匹配的选项以 NOT REGEXP 的形式存在。MariaDB 还为 REGEXP 和 NOT REGEXP 提供了同义词 RLIKE 和 NOT RLIKE,这些同义词是为了兼容性而创建的。
可以比较的模式可以是一个字面字符串或其他内容,例如表列。对于字符串,它使用了 C 转义语法,所以要将任何“\”字符都加倍。REGEXP 也是大小写不敏感的,但二进制字符串是例外。
可用的模式列表如下所示 –
序号 | 模式和描述 |
---|---|
1 | ^ 匹配字符串的开头。 |
2 | $ 匹配字符串的结尾。 |
3 | . 匹配一个字符。 |
4 | [...] 匹配方括号中的任意字符。 |
5 | [^...] 匹配方括号中未列出的任意字符。 |
6 | p1|p2|p3 匹配任何一个模式。 |
7 | * 匹配前面元素的0个或多个实例。 |
8 | + 匹配前面元素的1个或多个实例。 |
9 | {n} 匹配前面元素的n个实例。 |
10 | {m,n} 匹配前面元素的m到n个实例。 |
请查看下面给出的模式匹配示例:
以“pr”开头的产品 –
SELECT name FROM product_tbl WHERE name REGEXP '^pr';
以“na”结尾的产品 −
SELECT name FROM product_tbl WHERE name REGEXP 'na$';
以元音字母开头的产品 –
SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';