Как получить определенные c значения из json в MySQL - PullRequest
0 голосов
/ 08 мая 2020

У меня есть таблица в MySQL Версия = 5.7

Таблица_1 <- </p>

ID        Json
IR-1      {Json}
IR-2      {Json}

Пример Json Строка

{
  "flag": false,
  "resp": "RTUI",
  "mean": "r-2",
  "details": {
    "product": "IR JAD",
    "status": "failed",
    "datetime": "26/09/2017"
  }
}

Я хочу выберите поля resp, mean и status в указанном ниже формате. Я использую указанный ниже запрос, но он работает только для получения status в формате ["не удалось"].

select ID,
json_extract(Json, '$.*.resp') AS resp,
json_extract(Json, '$.*.mean') AS mean,
json_extract(Json, '$.*.status') AS status
from Table_1
where ID in ('IR-1','IR-2');

Требуемый вывод:

ID     resp     mean      status
IR-1   RTUI     r-2       failed

1 Ответ

1 голос
/ 08 мая 2020

У вас не должно быть .* для свойств верхнего уровня.

Кроме того, вероятно, было бы лучше явно указать свойство details, чем использовать wildcard для доступа к вложенным status свойство.

select ID,
    json_extract(Json, '$.resp') AS resp,
    json_extract(Json, '$.mean') AS mean,
    json_extract(Json, '$.details.status') AS status
from Table_1
where ID in ('IR-1','IR-2');

ДЕМО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...