您实际上如何在MySql中搜索反引号?

时间:2018-09-12 14:57:13

标签: mysql escaping

我需要在mysql中搜索包含字符`的字符串 我正在尝试:

select * from transactions where transactions.calculatorCode like "%`%";

,但它返回所有记录。 我想念什么吗?

1 个答案:

答案 0 :(得分:1)

您应该首先检查服务器上是否启用了ANSI_QUOTES模式

mysql> SELECT @@sql_mode;

如果在结果中看到它,那么您应该只用单引号括住字符串文字,因为双引号会将其解释为IDENTIFIERS(列,表等) ...)而不是字符串,这是标准的SQL行为。

所以您的查询应该变成

select * from transactions where transactions.calculatorCode like '%`%';

无论如何,您应该避免使用双引号将字符串引起来,因为您的SQL代码可移植性将受到严重影响。始终使用单引号是经验法则。

如果仍然无法正常运行,您可以尝试使用REGEXP_LIKE:

select * from transactions WHERE REGEXP_LIKE(calculatorCode, '`');
select * from transactions WHERE calculatorCode RLIKE '`';