Извлечение ключей из массива JSON в MySQL 5.7 - PullRequest
1 голос
/ 08 июля 2019

У меня есть таблица со столбцом JSON.Ниже приведен пример: таблица employee

id emp_json
1 {"details" : [{"10":"909"},{"11":"910"}]}
2 {"details" : [{"20":"809"},{"21":"810"}]}

Теперь я хочу извлечь идентификаторы из массива json

Я пытался выполнить запрос ниже.

SELECT JSON_KEYS(JSON_EXTRACT(u.emp_json, '$.details'), '$[0]') FROM employee u ;

, ноэто дает мне только один ключ в результате, который от первого объекта массива.Насколько я понимаю, это beacuase $ [0]

Ожидаемый

id json_key
1  10
1  11
2  20
2  21

Заранее спасибо

1 Ответ

0 голосов
/ 08 июля 2019

Это разделит запятую, вы выбираете только индекс 0, вы должны выбрать 1

SELECT
id,
CONCAT(
   JSON_KEYS(JSON_EXTRACT(u.emp_json, '$.details'), '$[0]'),
   ",",
   JSON_KEYS(JSON_EXTRACT(u.emp_json, '$.details'), '$[1]')
) As json_key
FROM employee u ;

Выход: -

| id  | json_key      |
| --- | ------------- |
| 1   | ["10"],["11"] |
| 2   | ["20"],["21"] |
...