这里有一个棘手的问题。
假设我有表'书',其中有'标题'栏目。我有一行'title'='MyBook'。
我想使用REGEXP搜索书名,我想将所有可搜索的字符串引用到文字序列:
SELECT * FROM books WHERE title REGEXP '\\QMyBook\\E';
当我使用mariaDB时,我的查询工作正常。 DB识别此引号。但是当我使用普通的MySql时,这个查询什么都不返回。问题不在反斜杠中,我认为MySql在使用“\ Q”和“\ E”时遇到麻烦。也许有办法以其他方式实现我的目标,但我真的不想分别逃避每一个角色。
我从java执行此查询。但是来自控制台的简单查询以相同的方式工作
问题是 - 由于某些原因,确实需要使用REGEXP(不是LIKE)运算符。
但我不希望这个带有regexp特殊字符的查询(例如'My.ook')在这里工作。我需要任何字符串,有或没有正则表达式特殊符号,由mysql作为文字序列处理(如果我们传递'点' - 我们正在寻找'点',而不是'任何字符')
答案 0 :(得分:-2)
我不认为这可以通过普通的MySQL完成,但是如果你升级到MariaDB,你可以使用你想要的语法。
有关更多信息,请参阅MariaDB的文档: https://mariadb.com/kb/en/mariadb/pcre/#quoting
SELECT * FROM books WHERE title REGEXP '\\QMyBook\\E';
我建议切换到MariaDB,原因如下:
此列表并非详尽无遗。