我在MySQL DB中使用REGEXP进行搜索,但是当我在搜索查询中插入' (撇号)和- (破折号)时,它没有返回正确的数据。
对此有什么解决方案吗?
下面是完整的查询:
select * from table where (field REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' or field2 REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' )发布于 2009-07-03 15:10:44
如果您的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[[:>:]]'请参阅:MySQL 5.1 REGEXP Manual
发布于 2009-07-02 13:15:56
你把字符放在方括号里了吗?尝试如下所示:
select * from Table where Field regexp '[\'-]'https://stackoverflow.com/questions/1074269
复制相似问题