我在MySQL数据库中使用REGEXP
进行搜索,但是当我在搜索中插入'
(撇号)和-
(破折号)时,它没有返回正确的数据查询。
有没有解决方案?
以下是完整查询:
select * from table where (field REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' or field2 REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' )
答案 0 :(得分:1)
如果您的REGEXP字符串分隔符是单引号,请在字符串中对其进行转义。此外,根据您的业务逻辑和表结构,您可以执行CONCAT来压缩语句:
SELECT field1, field2
WHERE CONCAT( field1, field2 ) REGEXP 'Mary\'s Restaurant'
如果您在字符类中使用短划线,请将其转义或将其作为该类中的第一项,因此引擎不会认为您尝试指定范围:
... REGEXP 'Mary\'s[- _]Restaurant'
如果你正在使用圣地亚哥的例子,你可以通过使用单词边界来减少REGEXP:
SELECT field1, field2
WHERE CONCAT( field1, field2 ) REGEXP '[[:<:]]SAN DIEGO[[:>:]]'
答案 1 :(得分:0)
你把字符放在方括号内吗?尝试这样的事情:
select * from Table where Field regexp '[\'-]'