首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REGEXP不适用于mysql中的‘(撇号)和-(破折号)

REGEXP不适用于mysql中的‘(撇号)和-(破折号)
EN

Stack Overflow用户
提问于 2009-07-02 13:13:36
回答 2查看 4.3K关注 0票数 0

我在MySQL DB中使用REGEXP进行搜索,但是当我在搜索查询中插入' (撇号)和- (破折号)时,它没有返回正确的数据。

对此有什么解决方案吗?

下面是完整的查询:

代码语言:javascript
复制
select * from table where  (field REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' or field2 REGEXP 'SAN DIEGO | SAN DIEGO |^SAN DIEGO' )
EN

回答 2

Stack Overflow用户

发布于 2009-07-03 15:10:44

如果您的REGEXP字符串分隔符是单引号,请在字符串中对其进行转义。此外,根据您的业务逻辑和表结构,您可以使用CONCAT来压缩语句:

代码语言:javascript
复制
SELECT field1, field2 
WHERE  CONCAT( field1, field2 ) REGEXP 'Mary\'s Restaurant'

如果在字符类中使用破折号,要么对其进行转义,要么将其设置为类中的第一项,这样引擎就不会认为您正在尝试指定范围:

代码语言:javascript
复制
 ... REGEXP 'Mary\'s[- _]Restaurant'

如果你正在使用圣地亚哥的例子,你也许可以通过使用单词边界来减少REGEXP:

代码语言:javascript
复制
SELECT field1, field2 
WHERE  CONCAT( field1, field2 ) REGEXP '[[:<:]]SAN DIEGO[[:>:]]'

请参阅:MySQL 5.1 REGEXP Manual

票数 1
EN

Stack Overflow用户

发布于 2009-07-02 13:15:56

你把字符放在方括号里了吗?尝试如下所示:

代码语言:javascript
复制
select * from Table where Field regexp '[\'-]'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1074269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档