Select Json JSON_VALUE 中的对象为 nvarchar(max)
Select Json Object as nvarchar(max) in JSON_VALUE
我不知道如何将 JSON 的路径提取为 nvarchar(max)
。它总是 returns null。
我不想指定要获取的字段,因为我不知道字段名称。所以这里的想法是 select 它作为一个字符串,稍后再处理它们。
DECLARE @json nvarchar(max) =
'{
"firstName": "John",
"lastName" : "doe",
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
}'
SELECT [Type]
FROM OPENJSON( @json, '$.address' )
WITH ([Type] NVARCHAR(max) '$');
预期结果是 Type
列包含 address
的整个 JSON 对象作为字符串
{ "streetAddress": "naist street", "city": "Nara", "postalCode" : "630-0192" }
您需要以不同的方式执行语句。请注意,当您将 OPENJSON()
与显式架构一起使用时,您需要使用 AS JSON
来指定引用的 属性 包含内部 JSON 对象或数组。当然,你可以使用JSON_QUERY()
得到相同的结果:
JSON:
DECLARE @json nvarchar(max) =
'{
"firstName": "John",
"lastName" : "doe",
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
}'
声明(使用OPENJSON()
):
SELECT *
FROM OPENJSON(@json)
WITH ([Type] NVARCHAR(max) '$.address' AS JSON);
声明(使用JSON_QUERY()
)
SELECT JSON_QUERY(@json, '$.address') AS [Type]
结果:
Type
{
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
我不知道如何将 JSON 的路径提取为 nvarchar(max)
。它总是 returns null。
我不想指定要获取的字段,因为我不知道字段名称。所以这里的想法是 select 它作为一个字符串,稍后再处理它们。
DECLARE @json nvarchar(max) =
'{
"firstName": "John",
"lastName" : "doe",
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
}'
SELECT [Type]
FROM OPENJSON( @json, '$.address' )
WITH ([Type] NVARCHAR(max) '$');
预期结果是 Type
列包含 address
的整个 JSON 对象作为字符串
{ "streetAddress": "naist street", "city": "Nara", "postalCode" : "630-0192" }
您需要以不同的方式执行语句。请注意,当您将 OPENJSON()
与显式架构一起使用时,您需要使用 AS JSON
来指定引用的 属性 包含内部 JSON 对象或数组。当然,你可以使用JSON_QUERY()
得到相同的结果:
JSON:
DECLARE @json nvarchar(max) =
'{
"firstName": "John",
"lastName" : "doe",
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
}'
声明(使用OPENJSON()
):
SELECT *
FROM OPENJSON(@json)
WITH ([Type] NVARCHAR(max) '$.address' AS JSON);
声明(使用JSON_QUERY()
)
SELECT JSON_QUERY(@json, '$.address') AS [Type]
结果:
Type
{
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}