Sql 如何从包含JSON数组的列中检索特定的JSON值
我在SQL Server表中有一个JSON数组:Sql 如何从包含JSON数组的列中检索特定的JSON值,sql,sql-server,Sql,Sql Server,我在SQL Server表中有一个JSON数组: [ { "FieldName": "DateCreated", "FieldValue": "10/22/2020" }, { "FieldName": "IsMember", "FieldValue": "fa
[
{
"FieldName": "DateCreated",
"FieldValue": "10/22/2020"
},
{
"FieldName": "IsMember",
"FieldValue": "false"
},
{
"FieldName": "EntityId",
"FieldValue": "ABC123"
}
]
我只想获取EntityId
对象的FieldValue
,因此输出应该仅为ABC123
我有这个疑问
SELECT JSON_VALUE(JsonColumnData, '$[2].FieldValue') AS EntityId
FROM MyTable
这将返回EntityId
值,但问题是我不能保证EntityId
始终位于JSON数组的相同位置
是否可以让select返回EntityId,而不管它在JSON数组中的位置如何?您可以使用它来查询数据并只过滤包含EntityId的行
创建表dbo.MyTable(
JsonColumnData nvarchar(最大值)
);
插入dbo.MyTable(JsonColumnData)值(N'[
{
“FieldName”:“DateCreated”,
“FieldValue”:“2020年10月22日”
},
{
“字段名”:“IsMember”,
“FieldValue”:“false”
},
{
“字段名”:“EntityId”,
“字段值”:“ABC123”
}
]');
选择FieldValue作为EntityId
从dbo.MyTable
将openjson(JsonColumnData)与(
字段名nvarchar(11),
字段值nvarchar(11)
)
其中FieldName=N'EntityId';
这就产生了
EntityId
---------
ABC123