【问题标题】:Regular Expression Error in MySQL QueryMySQL查询中的正则表达式错误
【发布时间】:2013-08-20 10:12:57
【问题描述】:

我正在尝试在软件标题数据库中搜索具有内部大写字母(例如 PowerPoiint、inCase)的软件标题。

我试过了

select * from table where field REGEXP '^([a-z][A-Z]+)+$'

这似乎有效,因为它返回了表格的一个子集,并且 大多数 是正确的,但相当一部分是不正确的(例如别名)。显然它正在做正确的事情,但不确定是什么;会不会是 ascii 搞砸了?

【问题讨论】:

  • Regular Expressions 中所述:“REGEXP 不区分大小写,除非与二进制字符串一起使用。
  • 我觉得其实应该是SELECT * FROM table WHERE BINARY field REGEXP '[a-z][A-Z]+[a-z]';
  • 我认为您可以安全地删除最后一个“+”-量词和括号。所以正则表达式变为 ^[a-z][A-Z]+$ - 我不确定括号外的 + 量词是否会产生错误,但尽管如此,它更清晰且结果相同;)
  • 谢谢大家,mysql新手不知道。二进制工作得很好。

标签: mysql regex


【解决方案1】:

试试这个作为你的 RegEx 模式:

^[A-z]+[A-Z][A-z]+$

它将匹配上述所有示例(PowerPoint、inCase),而不匹配“别名”,这是您遇到问题的示例之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2016-01-23
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多