Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql LIKE查询中的转义字段_Mysql_Sql - Fatal编程技术网

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
子句中具有特殊含义(或者只是进行简单的比较)。