Mysql LIKE查询中的转义字段
以下查询:Mysql LIKE查询中的转义字段,mysql,sql,Mysql,Sql,以下查询: SELECT `att`.`val` FROM `att` WHERE NOT (`att`.`val` LIKE `att`.`val`); 应该什么都不还,对吗 但是它返回所有带有反斜杠的vals 我如何使它不返回任何内容 val是一个varchar(1024)字段(非主字段和非空字段) 这当然是一个无用的查询,但它是另一个查询的简化版本,由于同样的原因无法工作 我使用的是mysql 5.6.20 谢谢 编辑: 我想转义每个需要转义的字符,以便查询按预期工作。不仅仅是反斜杠 尝
SELECT `att`.`val` FROM `att` WHERE NOT (`att`.`val` LIKE `att`.`val`);
应该什么都不还,对吗
但是它返回所有带有反斜杠的val
s
我如何使它不返回任何内容
val
是一个varchar(1024)
字段(非主字段和非空字段)
这当然是一个无用的查询,但它是另一个查询的简化版本,由于同样的原因无法工作
我使用的是mysql 5.6.20
谢谢
编辑:
我想转义每个需要转义的字符,以便查询按预期工作。不仅仅是反斜杠 尝试将条件更改为:
WHERE NOT (`att`.`val` LIKE replace(`att`.`val`,'\\','\\\\'))
-这将在
val
中用双反斜杠替换单反斜杠,这样它们就不再充当转义字符,而是被like
表达式视为文字反斜杠。(第一个反斜杠转义第二个。)因此,您希望val字段始终返回null可能使用REPLACE(att.val,\\\','')
?@Matt什么意思?@EllaShar您没有指定要转义的字段?@Coloco它工作正常,但可能会给出错误的结果(如果删除反斜杠会使文本等于另一个文本). 也许还有其他角色需要逃离?谢谢!是否有一种通用的方法来转义所有需要转义的字符?不只是backslashes@EllaShar:如果有,恐怕我不知道它是什么。根据定义,只有转义字符需要转义:)但是,您可能还希望转义字符%
和\uuu
,它们在LIKE
子句中具有特殊含义(或者只是进行简单的比较)。