【发布时间】:2021-03-16 03:50:43
【问题描述】:
表格列:
id
---------
details
我的表格列详细信息有 json 对象,如
"data" : [ {
"name" : "luke",
"dob" : "12-10-90",
"addr" : "sample1",
},
{
"name" : "sam",
"dob" : "12-10-88",
"addr" : "sample2"
}
]
我想写一个查询,它会给我如下记录:
| id | name| dob |addr |
|:-----|:----|:--- ------|:----------|
| 1 | luke| 12-10-90 | sample1 |
| 1 | sam | 12-10-88 | sample2 |
我试过了
select
ID,
JSON_VALUE(DETAILS, '$.data[0].name') ,
JSON_VALUE(DETAILS, '$.data[0].dob') ,
JSON_VALUE(DETAILS, '$.data[0].addr')
from
users;
计数结果:
id cnt name dob addr
-- --- --------- -------- -------
1 5 luke 12-10-90 sample1
1 5 sam 12-10-88 sample2
2 5 awd 12-10-90 sample1
2 5 awdawdm 12-10-88 sample2
2 5 sevsevsev 12-10-88 sample2
预期
id cnt name dob addr
-- --- --------- -------- -------
1 2 luke 12-10-90 sample1
1 2 sam 12-10-88 sample2
2 3 awd 12-10-90 sample1
2 3 awdawdm 12-10-88 sample2
2 3 sevsevsev 12-10-88 sample2
【问题讨论】:
-
但是我已经对索引进行了硬编码,它仍然没有给出两行。
-
@DaleK 我已经尝试使用 json_value 但它不会自行循环,具体取决于 json 对象中的元素数量,以及如何为同一个 id 设置两个不同的行?
标签: sql sql-server database json-query json-value