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 是不区分大小写的,除了二进制字符串。
以下是可以使用的可能模式表:
| Sr.No | Pattern & Description |
|---|---|
| 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]';