MySQL Escape查询结果中的双引号

时间:2011-02-20 22:54:53

标签: mysql escaping concatenation quotes

我有关于引号的CONCATENATION问题。 在我的数据库中,我有单引号和双引号文本,然后我用CONCAT建立了一个JSON字符串,

CONCAT('{"',a,'":"',b,'"}')

假设我们有以下数据:

a           b
Phrase      Monica's mirror
Phrase      Joe "Hammer" Smith
Phrase      Oo-la-laaa

串联将是

{"Phrase":"Monica's mirror"}
{"Phrase":"Joe "Hammer" Smith"}
{"Phrase":"Oo-la-laaa"}

正如你所看到的'Joes'Hammer“Smith”将创建一个无效的json字符串。

问题

SQL中有没有办法逃避引号(在CONCAT中)?所以我得到了这个结果:

{"Phrase":"Monica's mirror"}
{"Phrase":"Joe \"Hammer\" Smith"}
{"Phrase":"Oo-la-laaa"}

请记住,这不是在PHP方面,它需要在SQL查询中完成,
谢谢......

1 个答案:

答案 0 :(得分:9)

你尝试过这样的事吗?

CONCAT('{"',REPLACE(a,'"','\\"'),'":"',REPLACE(b,'"','\\"'),'"}')