mysql - 如何处理带有特殊字符/(正斜杠)和\(反斜杠)的查询

标签 mysql plsql

我有一个表,其中一列允许使用特殊字符,例如“/”(正斜杠)和“”(反斜杠)。

现在,当我尝试从表中搜索此类记录时,我无法获得这些记录。

例如:abc\def 或 abc/def

我正在生成如下搜索查询:

select * from table1_1 where column10 like '%abc\def%'

它返回 0 行,但实际上存在 1 条记录应返回。在这种情况下,我该如何编写查询?

最佳答案

诀窍是只对反斜杠进行双重转义;对于字符串转义,只需要一次转义。

例如

  • 单引号'只需要转义一次LIKE '%\'%'
  • 但是要查询反斜杠 \ 你需要双重转义到 LIKE '%\\\\%'
  • 如果你想查询反斜杠+单引号 \' 那么 LIKE '%\\\\\'%'(有 5 个反斜杠)

Explanation Source 摘录:

Because MySQL uses C escape syntax in strings (for example, “\n” to represent a newline character), you must double any “\” that you use in LIKE strings. For example, to search for “\n”, specify it as “\n”. To search for “\”, specify it as “\\”; this is because the backslashes are stripped once by the parser and again when the pattern match is made, leaving a single backslash to be matched against.

关于mysql - 如何处理带有特殊字符/(正斜杠)和\(反斜杠)的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16490325/

相关文章:

java - 概念 : Build Java Program and load it into Oracle DB - Wrapper function calls java function with return

php - mysql select where返回不完全匹配

mysql - 如何使用 ALTER 命令将 int 数据类型的列添加到 SQL 中的表中?

Java...获取每组 13 的第一个数字

java - 我必须使用 Java 生成 PL/SQL。大多数程序都是通用的。只有少数不断变化。怎么做?

oracle - PL/SQL 找不到数据异常处理

mysql - SQL 按原始顺序分区

mysql - 处理 mysql "ERROR 1062 (23000)"

sql - 将 EXECUTE IMMEDIATE 与带有变量的连接字符串结合使用

oracle - 如何修剪所有字符串类型表中所有行中的所有列?