首页 > 解决方案 > 根据mysql中的索引提取json数组

问题描述

有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个元素(下面提取第2个元素)

select JSON_EXTRACT(somecolumn1,"$.my_policies.inmy_policies.some_filters[1]") 
as name from table1;

我需要将这两个查询组合在一个命令中。首先获取索引并在第 n 个位置传递 JSON EXTRACT 中的索引。

标签: mysqljson

解决方案


尝试:

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


推荐阅读