Доступ к ключу JSON, содержащему двоеточие и дефис

#mysql #json

#mysql #json

Вопрос:

Таблица MySQL имеет этот формат:

 CREATE TABLE bar...
   ...
   foo JSON
   ...
  

Поле foo имеет следующее содержимое:

 {"#:8": 0.90189, "#:34": 0.90239, "#:55": 0.90238, "#:144": 0.90219, "X:21-34": -1}
  

Эта команда завершается ошибкой:

 SELECT foo FROM bar WHERE foo->'$.X:21-34' != 0;
  

Ошибка (4,1): неверное выражение пути в формате JSON. Ошибка находится вокруг
позиции символа 9.

Как я могу получить доступ к тем полям, которые имеют некоторые специальные символы в имени ключа, но строка JSON все еще действительна?

Комментарии:

1. bugs.mysql.com/bug.php?id=81896

Ответ №1:

БОЖЕ. Это было очень просто и логично. Это решение:

 SELECT foo FROM bar WHERE foo->'$."X:21-34"' != 0;
  

Я должен использовать двойные кавычки вокруг имени ключа.

Комментарии:

1. Хороший ответ! Большое спасибо