我有一张桌子
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;
没有运气。
如果名称包含撇号或其他特殊字符(&符号等),有没有办法按名称搜索?
答案 0 :(得分:1)
如果您使用的是PHP,则可以使用mysql_real_escape_string()
答案 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。