有2个查询。首先是如何获取json数组的索引
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(JSON_SEARCH(somecolumn1, 'one', 'macro', null,
'$.my_policies.inmy_policies.some_filters'),"[",-1),']',1)
as name FROM table1;
第二个是从json数组中获取第n个元素(下面提取第二个元素)
select JSON_EXTRACT(somecolumn1,"$.my_policies.inmy_policies.some_filters[1]")
as name from table1;
我需要将这两个查询合并到一个命令中。首先获取索引,然后将索引传递到JSON EXTRACT中的第n个位置。
答案 0 :(得分:0)
尝试:
SELECT
JSON_EXTRACT(
@`json`,
CONCAT(
'$.my_policies.inmy_policies.some_filters[',
(
SELECT
SUBSTRING_INDEX(
SUBSTRING_INDEX(
JSON_SEARCH(
@`json`,
'one',
'macro',
null,
'$.my_policies.inmy_policies.some_filters[*].filter_name'
),
"[",
-1
),
']',
1
)
),
']'
)
) `json_filter`;
请参见dbfiddle。