以下查询:
SELECT `att`.`val` FROM `att` WHERE NOT (`att`.`val` LIKE `att`.`val`);
应该什么都不返回,对吧?
但它会返回所有包含反斜杠的 val
。
如何让它不返回任何内容?
val
是一个 varchar(1024)
字段(不是主字段,也不是 null)。
这当然是一个无用的查询,但它是另一个出于同样原因而不起作用的查询的简化版本。
我正在使用 mysql 5.6.20。
谢谢!
编辑:
我想转义每个需要转义的字符,以便查询按预期工作。不仅仅是反斜杠。
最佳答案
尝试将条件更改为:
WHERE NOT (`att`.`val` LIKE replace(`att`.`val`,'\\','\\\\'))
- 这将 val
中的单反斜杠替换为双反斜杠,因此它们不会充当转义字符,而是被 like
表达式视为文字反斜杠。 (第一个反斜杠转义第二个。)
关于mysql - LIKE 查询中的转义字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30100903/