以下查询:
SELECT `att`.`val` FROM `att` WHERE NOT (`att`.`val` LIKE `att`.`val`);
什么都不回,对吧?
但它会返回所有带有反斜杠的val
。
如何让它什么都不返回?
val
是varchar(1024)
字段(不是主要字段,而不是空字段)。
这当然是一个无用的查询,但它是另一个查询的简化版本,因为同样的原因而无法正常工作。
我使用的是mysql 5.6.20。
谢谢!
修改
我想要转义每个需要转义的字符,以便查询按预期工作。不只是反斜杠。
答案 0 :(得分:2)
尝试将条件更改为:
WHERE NOT (`att`.`val` LIKE replace(`att`.`val`,'\\','\\\\'))
- 这会在val
中用双反斜杠替换单个反斜杠,这样它们就不会充当转义字符,而是被like
表达式视为文字反斜杠。 (第一个反斜杠逃脱了第二个。)