我需要在我正在尝试的mysql中搜索包含字符`的字符串:
select * from transactions where transactions.calculatorCode like "%`%";
但它返回所有记录。我错过了什么吗?
您应首先检查服务器上是否启用了ANSI_QUOTES模式
mysql> SELECT @@sql_mode;
如果你在结果中看到它,那么你应该只用单引号包围你的字符串litterals,因为双引号会将它们解释为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 '`';