如何编写MySQL REGEXP?

时间:2010-01-02 02:18:05

标签: sql mysql database regex

表格包含字符串"Hello world!"

将*视为普通的通配符,如何编写一个对'W*rld!'评估为真的REGEXP,但为'H*rld!'评估为假,因为H是另一个单词的一部分。由于跟踪'W*rld'

'!'也应该评估为假

3 个答案:

答案 0 :(得分:8)

使用:

WHERE column REGEXP 'W[[:alnum:]]+rld!'

或者,您可以使用:

WHERE column RLIKE 'W[[:alnum:]]+rld!'
  • RLIKEREGEXP
  • 的同义词
  • [[:alnum:]]将允许任何字母数字字符,[[:alnum:]]+将允许倍数
  • REGEXP \ RLIKE不区分大小写,除非与二进制字符串一起使用。

参考:MySQL Regex Support

答案 1 :(得分:2)

如果您只想匹配单词world,请执行以下操作:

SELECT * FROM `table` WHERE `field_name` LIKE "w_rld!";

_允许使用单个通配符。

编辑:我意识到OP使用REGEXP请求了这个解决方案,但是由于没有使用正则表达式可以实现相同的结果,我提供了这个应该是可行的解决方案执行速度比REGEXP快。

答案 2 :(得分:1)

您可以在MySQL中使用正则表达式:

SELECT 'Hello world!' REGEXP 'H[[:alnum:]]+rld!'
0
SELECT 'Hello world!' REGEXP 'w[[:alnum:]]+rld!'
1

有关语法的更多信息,请参见here