[英]Regexp to match Javascript string literals with a specific keyword using Java
[英]Escaping String literals in REGEXP with MySQL
这里有一个棘手的问题。
可以说我有表“ books”,其中有“ title”列。 我有一排带有'title'='MyBook'的行。
我想使用REGEXP搜索书名,并且想将所有可搜索的字符串都引用为文字序列:
SELECT * FROM books WHERE title REGEXP '\\QMyBook\\E';
当我使用mariaDB时,我的查询工作正常。 DB会识别此引号。 但是,当我使用纯MySql时,此查询不返回任何内容。 问题不在于反斜杠,我认为MySql在使用“ \\ Q”和“ \\ E”时遇到麻烦。 也许有一种方法可以实现我的目标,但是我真的不想分开逃避每个角色。
我从Java执行此查询。 但是从控制台进行普通查询的方式相同
问题是-由于某些原因,确实有必要使用REGEXP(而不是LIKE)运算符。
但是我不希望带有正则表达式特殊字符(例如“ My.ook”)的查询在这里起作用。 我需要任何带有或不带有正则表达式特殊符号的字符串,都由mysql作为原义序列处理(如果我们传递“点”,我们正在寻找“点”,而不是“任何字符”)
我认为普通的MySQL无法做到这一点,但是如果您升级到MariaDB,则可以使用所需的语法。
请参阅MariaDB的文档以获取更多信息: https : //mariadb.com/kb/en/mariadb/pcre/#quoting
SELECT * FROM books WHERE title REGEXP '\\QMyBook\\E';
我建议切换到MariaDB的原因如下:
此列表并不详尽。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.