在查询结果中转义MySQL双引号

5

我在引号连接方面遇到了问题。 在我的数据库中,有单引号和双引号的文本,然后我使用 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个回答

13

你尝试过像这样的方法吗?

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

在等待答案的时候,我找到了相同的函数 :) 你确认了我走在正确的轨道上!谢谢。 - Max Kielland
现在对我来说已经太晚了,我发现我已经在一个查询中使用了那个解决方案... 该去睡觉了,哈哈:P 不管怎样还是谢谢! - Max Kielland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接