在SQL中,如何通过索引[0]
提取键的值?或者,从这个JSON结构中提取值的最佳方法是什么?
declare @jsonString nvarchar(max)
set @jsonString = '{
"action": "edit",
"data": {
"Accountable Inventory Technician|99999": {
"PosTitle": "Accountable Inventory TECH",
"Publish": "true"
}
}
}'
这将为我提供密钥的名称,“操作”和“数据”:
select [key]
from OPENJSON(@jsonString, '$')
这将获得Data“Accountable Inventory Technician ...”下第一个键的值:
select *
from OPENJSON(@jsonString, '$.data')
我无法获得“行动”的价值。这什么都不返回:
select *
from OPENJSON(@jsonString, 'lax $.action')
我无法按索引引用。这什么都不返回:
select *
from OPENJSON(@jsonString, '$.data[0].PosTitle')
我做错了什么?
答案 0 :(得分:1)
在SQL中,如何通过索引[0]提取键的值?或者,是什么 从这个JSON结构中提取值的最佳方法是什么?
JSON索引用于数组。例如,如果您的JSON具有JQuery
,那么引用[0]项将具有["some","values","in","an","array"]
值。
您的示例没有数组,因此您无法以这种方式访问它。
我无法获得" action"。
的价值
使用"some"
您可以访问对象中的特定项目:
JSON_VALUE
如果您的JSON存储在表格中,您可以使用SELECT JSON_VALUE(@jsonString, '$.action') [action];
SELECT JSON_VALUE(@jsonString, '$.data."Accountable Inventory Technician|99999".PosTitle') PosTitle;
和OPENJSON
CROSS APPLY