arrays - 我如何访问多维 json 数组中的元素(在 SQL Server 中)
问题描述
我有一个多维 JSON 数组,我正在访问 SQL Server 中的 JSON 数组并使用“OPENJSON”将 JSON 数据转换为 SQL。我目前在从多维数组中获取数据时遇到问题
Declare @Json nvarchar(max)
Set @Json= '[{
"id": 0,
"healthandSafety": "true",
"estimationCost": "7878",
"comments": "\"Comments\"",
"image": [{
"imageData": "1"
}, {
"imageData": "2"
}, {
"imageData": "3"
}, {
"imageData": "4"
}, {
"imageData": "5"
}]
}, {
"id": 1,
"healthandSafety": "false",
"estimationCost": "90",
"comments": "\"89089\"",
"image": [{
"imageData": "6"
}, {
"imageData": "7"
}, {
"imageData": "8"
}, {
"imageData": "9"
}, {
"imageData": "10"
}, {
"imageData": "11"
}]
}]'
Select ImageJsonFile from OPENJSON (@Json) with (ImageJsonFile nvarchar(max) '$.image[0].imageData')
当我尝试上面的代码时,我得到了以下输出:
ImageJsonFile
1
6
我期望的输出:
ImageJsonFile
1
2
3
4
5
解决方案
您需要定义查询路径:
Select * from OPENJSON (@Json,'$[0].image') with (ImageJsonFile nvarchar(max) '$.imageData')
推荐阅读
- javascript - Javascript addEventListener 在某些情况下不工作,但在其他情况下工作
- angular - 在 Angular 中输入只能包含 13 个数字
- amazon-web-services - SageMaker SkLearn - 模型保存到提供的存储桶,而不是完整的提供路径
- shell - 父源外部文件,子无权访问其中的函数
- javascript - 计划任务在没有 setTimeout 的情况下运行
- multithreading - 异步代码是否浪费处理能力
- django - 使用 update_or_create() 获取“重复键值违反唯一约束”(非默认字段是 unique_together)
- angular - 等待通过 websocket 的承诺
- java - 为什么在方法中将 { 5,7,5,8,1} 作为数组传递会在 Java 中引发错误?
- javascript - 通过 foo 循环一次在按钮上添加单个唯一类