我正在使用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“每行可以有多少个元素。
任何帮助,都将不胜感激。
发布于 2018-06-05 05:21:25
您可以使用一些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。
https://stackoverflow.com/questions/50672950
复制相似问题