MySql - Json_extract:count个元素

时间:2018-06-04 03:03:24

标签: mysql json

我正在使用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属性有2个值:" inf:VALUE1"和" inf:VALUE2"。

我的目标是使用以下格式创建一个表格:

ID     QTD_VAR     INF
35        2        VALUE1, VALUE2

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

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

但问题是我不知道有多少元素" var"可以在每一行。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用一些12.16.1 JSON Function Reference。您需要调整所需的一切。

只有一些想法:

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`;

请参阅dbfiddle