首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySql - Json_extract:计数元素

MySql - Json_extract:计数元素
EN

Stack Overflow用户
提问于 2018-06-04 11:03:24
回答 1查看 1.7K关注 0票数 1

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

代码语言:javascript
复制
{
  "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”。

我的目标是创建一个如下格式的表:

代码语言:javascript
复制
ID     QTD_VAR     INF
35        2        VALUE1, VALUE2

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

代码语言:javascript
复制
select JSON_EXTRACT(`jsondata` , '$.id.var[1].INF')
from tmp;

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

任何帮助,都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-06-05 05:21:25

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

只有一些想法:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50672950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档