【发布时间】: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新手不知道。二进制工作得很好。