为什么在mySQL中转义双引号而不返回结果?

时间:2018-02-22 17:15:11

标签: mysql sql escaping

我有一个基本表(用户),其中包含'用户名'列和用户ID'柱 现在我有2个条目:

USER                USER ID
---------------------------
Mark                0
A's Catcher         1
B"s Catcher         2

我尝试了3次查询,带双引号的查询由于某种原因失败,如下所示:

1)工作:如果我执行以下查询

select * from user where username = 'Mark';

2) WORKS :如果我执行以下查询

select * from user where username = 'A\'s Catcher';

3)不工作:如果我执行此查询,则会给出0结果..

select * from user where username = 'B\"s Catcher';

我完全糊涂了,我觉得在没有任何问题之前我已经逃过这样的双引号..我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

SELECT *
FROM user
WHERE username = CONCAT('B','"','s Catcher');

答案 1 :(得分:0)

MySQL就像PHP知道第一个引用类型:

 '"' // a String with a "
 "'" // a String with a '

只有外部引号需要在内部进行转义:

 '\'' // a string with a '
 "\"" // a string with a "

因此

 'B\"s Catcher' // is a string literally containing: B\"s Catcher

sqlfiddle http://sqlfiddle.com/#!9/bb8d3c/1