MySQL 正则表达式
我们已经了解到MySQL可以通过LIKE ...%
来进行模糊匹配。
MySQL同样也支持其他正则表达式的匹配,MySQL中使用REGEXP
操作符来进行正则表达式匹配。
下表中的正则模式可应用于REGEXP
操作符中
模式 | 描述 |
---|---|
^ |
匹配输入字符串的开始位置。 如果设置了 RegExp 对象的 Multiline 属性, ^ 也匹配\n 或\r 之后的位置 |
$ |
匹配输入字符串的结束位置。 如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 \n 或\r 之前的位置 |
. |
匹配除\n 之外的任何单个字符。要匹配包括 \n 在内的任何字符,请使用像[.\n] 的模式 |
[...] |
字符集合。匹配所包含的任意一个字符。 例如, [abc] 可以匹配plain 中的a |
[^...] |
负值字符集合。匹配未包含的任意字符。 例如, [^abc] 可以匹配plain 中的p |
p1\|p2\|p3 |
匹配 p1 或 p2 或 p3。 例如, z\|food 能匹配z 或food ;(z\|f)ood 则匹配zood 或food |
* |
匹配前面的子表达式零次或多次。 例如, zo* 能匹配z 以及zoo 。* 等价于{0,} |
+ |
匹配前面的子表达式一次或多次。 例如, zo+ 能匹配zo 以及zoo ,但不能匹配z 。+ 等价于{1,} |
{n} |
n 是一个非负整数。匹配确定的n 次。例如: o{2} 不能匹配Bob 中的o ,但是能匹配food 中的两个 o |
{n,m} |
m 和n 均为非负整数,其中n <= m 。最少匹配 n 次且最多匹配m 次 |
使用实例
了解以上的正则需求后,我们就可以根据自己的需求来编写带有正则表达式的SQL语句。以下列出几个小实例(表名:person_tbl
)来加深我们的理解:
查找name字段中以'st'为开头的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
查找name字段中以'ok'为结尾的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
查找name字段中包含'mar'字符串的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/24/mysql-regular-expressions/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
MySQL 正则表达式
我们已经了解到MySQL可以通过LIKE ...%来进行模糊匹配。
MySQL同样也支持其他正则表达式的匹配,MySQL中使用REGEXP操作符来进行正则表达式匹配。
下表中的正则……
文章目录
关闭
共有 0 条评论