Как извлечь информацию из JSon в MYSQL - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть пример данных

 set @j = '[{"id": 1, "title": "Mohan"}, 
            {"id": 2, "title": "Rama"}, 
            {"id": 3, "title": "IP Mana"}]';
  Select REPLACE(REPLACE(REPLACE(JSON_EXTRACT(@j, '$**.*'),"[",""),"]",""),'"','') AS Name_List from  tbl_employee 

Я получаю данные вот так:

    NameList
 1, Mohan, 2, Rama, 3, IP Mana

Я пытаюсь получить вывод так:

NameList
 1 : Mohan, 2 : Rama, 3 : IP Mana

Может ли кто-нибудь предложить мне.

1 Ответ

1 голос
/ 22 апреля 2020

В MySQL 8.0 вы можете использовать json_table() для этого:

select id, title
from json_table(
    @j,
    '$[*]'
    columns (id int path '$.id', title varchar(20) path '$.title')
) t;

Или, если вы хотите, чтобы результаты были в качестве скалярного значения:

select group_concat(id, ' : ', title separator ', ') res
from json_table(
    @j,
    '$[*]'
    columns (id int path '$.id', title varchar(20) path '$.title')
) t;

В более ранних версиях вы обычно используете таблицу чисел и json_extract():

select 
    json_extract(@j, concat('$[', n.n, '].id')) id,
    json_extract(@j, concat('$[', n.n, '].title')) title
from (select 0 n union all select 1 union all select 2 union all select 3) n
where json_extract(@j, concat('$[', n, ']')) is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...