MySQL 5.7 JSON_EXTRACT не работает со строками в кавычках внутри объекта: [ОШИБКА] "Отсутствует заключительная кавычка в строке" - PullRequest
0 голосов
/ 25 августа 2018

Я не могу извлечь строки в кавычках, используя функцию JSON_EXTRACT в MySQL 5.7.

Пример ввода:

{
    "email": "d'souza@email.com",
    "body": "I may have "random quotes '(single)/(double)" " in my source data"
}

Пробовал с помощью,

SELECT 
@valid_source := JSON_VALID(jsonString), NULL
IF(@valid_source, JSON_UNQUOTE(JSON_EXTRACT(jsonString, "$.email")), NULL)

Я получаю сообщение об ошибке: Недопустимый текст JSON в аргументе 1 для функции json_extract: «Отсутствует заключительная кавычка в строке». в положении ххх

Любая помощь будет оценена, спасибо!

1 Ответ

0 голосов
/ 27 августа 2018

Вот исправление, которое сработало для меня: Я использовал оператор "->" вместо JSON_UNQUOTE (JSON_EXTRACT ("jsonString")) , и он не выдавал мне никаких ошибок для любых кавычек в моей входной строке. Обратите внимание, что приведенный выше пример JSON был только одним из вариантов использования, которые я ожидал во входных данных. У меня есть около 4 миллионов записей со всеми различными комбинациями символов и кавычек, так как он содержит тела электронной почты и использование операторов вместо реальных команд работало совершенно нормально, это странно, поскольку обе они по сути одинаковы, но тем не менее я рад, что Я мог бы решить это с помощью небольшого исправления.

{
@valid_json := JSON_VALID(inputString),
IF(@valid_json, inputString ->> '$.email', NULL) AS EMAIL,
}
...