我正在做一个项目,需要查找包含一个确切字符串的记录,或者作为一个确切格式的一部分的相同字符串。换言之,如果字符串是“hello world”,可能会说。。。数据库中具有此字段值的10条记录,但该字段可能是以下之一:

"1. hello world"
"1 hello world"
"hello world"
"hello world (xyz)"
"1. hello world (xyz)"
"1 hello world (zyx)"

字符串“hello World”可以是任何东西,但是前缀总是以一个数字开头或不存在,并且后缀总是以括号结尾或不存在。
我以为我用下面的正则表达式破解了它,但这不会返回任何记录:
WHERE fieldname REGEXP '^([0-9]+.*)?[[:<:]]hello world[[:>:]](.*\))?$'

另外,我以前从未使用过[[::]],假设这是一种方法,我不确定如何在两者之间转义文本,因为这将是PHP生成的?文档中说要将转义反斜杠加倍,所以我猜mysql_real_escape_string还不够。。。?
如往常一样,任何建议都将不胜感激。

最佳答案

作为解决方法,您可以尝试将最后一部分[[:>:]](.*\))?$更改为备用。

^([0-9].*)?[[:<:]]hello world($|[[:>:]].+[)]$)

SQL Fiddle
如果对转义不确定,请尝试将特殊字符放入字符类[)]see this question中,以便转义字符串的动态部分。

关于mysql - 查找包含确切字符串的MySQL记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34693469/

10-12 13:59
查看更多