mysql-json\u extract:count元素

nx7onnlm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(385)

我正在mysql中使用json类型的列。我有一个包含两列id和jsondata(json类型列)的表。下面是我的json行的示例:

{
  "id": "35",
    "var": [
      {
        "inf": "VALUE1",
        "prod": {
          "xProd": "PRODUCT 1",
        },
        "nItem": 1
      },
      {
        "inf": "VALUE2",
        "prod": {
          "xProd": "PRODUCT 2",
        },
        "nItem": 2
      },
    ]
}

如何提取句子大小的“var”属性?在我的例子中,var属性内部有两个值:“inf:value1”和inf:value2".
我的目标是创建一个具有以下格式的表:

ID     QTD_VAR     INF
35        2        VALUE1, VALUE2

如果我使用下面的代码,我可以从json中提取value2:

select JSON_EXTRACT(`jsondata` , '$.id.var[1].INF')
from tmp;

但问题是我不知道“var”每行可以有多少个元素。
感谢您的帮助。

mxg2im7a

mxg2im7a1#

您可以使用一些12.16.1json函数引用。你需要调整你所需要的一切。
只有一些想法:

SELECT
  CAST(JSON_UNQUOTE(JSON_EXTRACT(@`json`, '$.id')) AS SIGNED) `ID`,
  JSON_LENGTH(@`json`, '$.var') `QTD_VAR`,
  REGEXP_REPLACE(JSON_EXTRACT(@`json`, '$.var[*].inf'), '[\\[\\]"]', '') `INF`;

见小提琴。

相关问题