MySQL Escape двойные кавычки в результате запроса - PullRequest
3 голосов
/ 21 февраля 2011

У меня проблема с CONCATENATION относительно кавычек В моей базе данных у меня есть одинарные и двойные кавычки, а затем я строю JSON-строку с CONCAT,

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 Ответ

9 голосов
/ 21 февраля 2011

Вы пробовали что-то подобное?

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