В 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