在具有特殊字符的SQL查询中使用LIKE发出问题

时间:2011-02-25 23:58:55

标签: mysql

SELECT id, absolute_tag, tag FROM c7_storage_tags
WHERE users_id = 1 
      AND LOWER(absolute_tag) LIKE LOWER('@#Pictures#zee\'s fav%')

这并没有给我正确的结果,即使你在我的数据库中有一行正确的字符串。

对我来说更好的解决方案是找出一种方法,以便“@#Pictures#zee \'fav”字符串,可以被视为一个字符串。我可以表现得像。

我该如何解决?

提前致谢。

Zeeshan

1 个答案:

答案 0 :(得分:3)

如果你的字符串中有反斜杠,你应该将其转义两次:

// value absolute_tag == "@#Pictures#zee\'s fav"
select * from test where  `absolute_tag` like '@#Pictures#zee\\\\\'%'

来自http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

您的查询应该是

SELECT id, absolute_tag, tag FROM c7_storage_tags
WHERE users_id = 1 
AND LOWER(absolute_tag) LIKE LOWER('@#Pictures#zee\\\\\'s fav%')

您的原始查询是在寻找带有absoulte_tags的记录,首先是“@#Pictures#zee's fav”