mysql - LIKE 查询中的转义字段

标签 mysql sql

以下查询:

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/

相关文章:

php mysql 查询以整数作为值错误

mysql - SQL 数据库 : use one table with 3, 5M 条目或条目较少的许多表?

MySql 查询优化

sql - Postgres 递归函数唯一值

SQLITE:如何对包含值 1-99 和字母 a-z 的字符串列进行排序,首先是数字,然后是字母

sql - XMLTABLE 提取元素的位置()

mysql - 子查询很慢

sql - Oracle Rownum = 2 不返回结果

sql - 如何限制 Oracle 查询排序后返回的行数?

mysql - 当从文件(批处理模式)重定向 SQL 输入时,为 mysql 命令行获取相同的输出