MySQL SELECT * WHERE name =“带有反斜杠的东西”

时间:2011-08-22 17:20:19

标签: mysql

我有一张桌子

table_id | name   | amount
1        | Arby\'s| 12
2        | Wendy's| 8

我经常做一个

SELECT * WHERE table_id = whatever

但我想(反而)做:

SELECT * WHERE name =“Arby \'s”;

但是,我似乎遇到了反斜杠的问题。结果根本没有显示出来。我也试过了

SELECT * WHERE name = 'Arby's;

没有运气。

如果名称包含撇号或其他特殊字符(&符号等),有没有办法按名称搜索?

3 个答案:

答案 0 :(得分:1)

如果您使用的是PHP,则可以使用mysql_real_escape_string()

你可能也想看看这个 How do I escape special characters in MySQL?

答案 1 :(得分:1)

SELECT * FROM table WHERE name = 'Arby\\\'s'

用反斜杠转义反斜杠并用另一个反斜杠转义撇号导致3个反斜杠。

答案 2 :(得分:1)

 SELECT * WHERE name = 'Arby\'s'; 

你错过了字符串末尾的结束'。这将匹配Arby's。如果你想匹配Arby\'s(我不认为你这样做),那就是:

 SELECT * WHERE name = 'Arby\\\'s'; 

反斜杠需要'双重转义',因为它们是转义字符。因此,要匹配\\,您的查询需要为\\\\。当他们紧接在另一个需要转义的角色之前时,你会得到另一个角色 - 所以要匹配\\'你需要的\\\\\'

我建议你read this