表格包含字符串"Hello world!"
将*视为普通的通配符,如何编写一个对'W*rld!'
评估为真的REGEXP,但为'H*rld!'
评估为假,因为H是另一个单词的一部分。由于跟踪'W*rld'
'!'
也应该评估为假
答案 0 :(得分:8)
使用:
WHERE column REGEXP 'W[[:alnum:]]+rld!'
或者,您可以使用:
WHERE column RLIKE 'W[[:alnum:]]+rld!'
RLIKE
是REGEXP
[[:alnum:]]
将允许任何字母数字字符,[[:alnum:]]+
将允许倍数REGEXP
\ RLIKE
不区分大小写,除非与二进制字符串一起使用。 答案 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。