Запрос для извлечения определенного объекта из целого объекта json в MYsql - PullRequest
0 голосов
/ 10 мая 2018

В моей записи базы данных есть одно сложное поле объекта json с именем appjson

{
"id":"123",
"appDetails" : "",
"official" : {
    "comments" : {
        "internalcomments" : "successfull",
        "supportingDocs" : [{}
        ]
    }
}
}

Я могу получить весь JSON, используя прямой запрос.

Но я не хочу весь Comeplex JSON, мне просто нужен конкретный объект из этого, т.е. официальный

Для всего официального объекта, который я пробовал ниже запроса, и он не работает

SELECT appjson.official from appdata WHERE id = '123'

аналогично только для внутренних комментариев, которые я использовал ниже

SELECT appjson.official.internalcomments from appdata WHERE id = '123'

Но я не смог получить это .. Так есть ли другой способ / способ получить определенный объект из json в MYSQL.

Любая помощь очень ценится. Спасибо

Я пытался использовать JSON_EXTRACT

ВЫБРАТЬ JSON_EXTRACT (appjson, '$. "Official"') из appdata WHERE id = '123'

но не повезло это дает JSON_EXTRACT не распознанное имя встроенной функции

1 Ответ

0 голосов
/ 10 мая 2018

Ниже приведен пошаговый шаг для получения желаемого результата.

mysql> CREATE TABLE t1 (id int, jdoc JSON);
Query OK, 0 rows affected (0.35 sec)

uery OK, 0 rows affected (0.35 sec)

mysql> insert into t1 values(1,'{
    '> "id":"123",
    '> "appDetails" : "",
    '> "official" : {
    '>     "comments" : {
    '>         "internalcomments" : "successfull",
    '>         "supportingDocs" : [{}
    '>         ]
    '>     }
    '> }
    '> }');
Query OK, 1 row affected (0.06 sec)

mysql> SELECT JSON_EXTRACT(jdoc, '$.official') as official from t1 where JSON_EXTRACT(jdoc, '$.id') = '123';
+---------------------------------------------------------------------------+
| official                                                                  |
+---------------------------------------------------------------------------+
| {"comments": {"supportingDocs": [{}], "internalcomments": "successfull"}} |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...