我有一个表
table_id | name | amount
1 | Arby's| 12
2 | Wendy's| 8
我通常做
SELECT*WHERE table_id=任意
但我想(相反(做:
SELECT*WHERE name="Arby\'s";
然而,我似乎遇到了反斜杠的问题。结果根本没有出现。我也试过
SELECT * WHERE name = 'Arby's;
没有任何运气。
如果名称包含撇号或其他特殊字符(与号等(,是否有任何方法可以按名称搜索
SELECT * FROM table WHERE name = 'Arby\'s'
用反斜杠转义反斜杠,用另一个反斜杠转义撇号会导致3个反斜杠。
如果使用PHP,可以使用mysql_real_escape_string()
你可能还想看看这个如何在MySQL中转义特殊字符?
SELECT * WHERE name = 'Arby's';
字符串末尾缺少一个结束'
。这将与Arby's
相匹配。如果你想匹配Arby's
(我认为你不会匹配(,那就是:
SELECT * WHERE name = 'Arby\'s';
后斜杠需要"双转义",因为它们是转义字符。因此,为了匹配\
,您的查询需要是\\
。当它们紧跟在另一个需要转义的字符之前时,您最终会得到另一个字符——因此要匹配\'
,您需要\\'
我建议你读这篇文章。