Sql server 在Json_值中选择Json对象作为nvarchar(max)
我不知道如何将JSON的路径提取为Sql server 在Json_值中选择Json对象作为nvarchar(max),sql-server,open-json,json-value,Sql Server,Open Json,Json Value,我不知道如何将JSON的路径提取为nvarchar(max)。它总是返回null 我不想指定要获取的字段,因为我不知道字段名。所以这里的想法是选择它作为一个字符串,稍后再处理它们 DECLARE @json nvarchar(max) = '{ "firstName": "John", "lastName" : "doe", "address" : { "streetAddress": "naist street", "city"
nvarchar(max)
。它总是返回null
我不想指定要获取的字段,因为我不知道字段名。所以这里的想法是选择它作为一个字符串,稍后再处理它们
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()
时,需要使用作为JSON
来指定引用的属性包含内部JSON对象或数组。当然,您可以使用JSON\u QUERY()
获得相同的结果:
JSON:
语句(使用OPENJSON()
):
语句(使用JSON\u QUERY()
)
结果:
Type
{
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}
SELECT *
FROM OPENJSON(@json)
WITH ([Type] NVARCHAR(max) '$.address' AS JSON);
SELECT JSON_QUERY(@json, '$.address') AS [Type]
Type
{
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
}