[英]Concatenate nested JSON in SQL Server
我試圖在SQL中連接嵌套的JSON,如何做到這一點。
這個你能幫我嗎。
示例: 我有JSON,如下所示 。
[
{
"Name": "Cards",
"Value": [
"Pack of 24 Dare Cards"
],
"SourceSpecified": false,
"Any": []
},
{
"Name": "Boppers and Shot Glasses",
"Value": [
"12 Willy Shot Glass and 12 Hen Boppers"
],
"SourceSpecified": false,
"Any": []
}
]
我想要外出:
Pack of 24 Dare Cards-12 Willy Shot Glass and 12 Hen Boppers
如果Value始終包含一個元素
DECLARE @JSON NVARCHAR(MAX) = ' [
{
"Name": "Cards",
"Value": [
"Pack of 24 Dare Cards"
],
"SourceSpecified": false,
"Any": []
},
{
"Name": "Boppers and Shot Glasses",
"Value": [
"12 Willy Shot Glass and 12 Hen Boppers"
],
"SourceSpecified": false,
"Any": []
}
]'
SELECT STRING_AGG(Val, '-')
FROM OPENJSON(@JSON)
WITH (Val NVARCHAR(MAX) '$.Value[0]')
支持多個值也很容易。
SELECT STRING_AGG(Val, '-')
FROM OPENJSON(@JSON)
WITH (VALUE NVARCHAR(MAX) '$.Value' AS JSON)
OUTER APPLY OPENJSON(VALUE) WITH (Val NVARCHAR(MAX) '$')
我通過創建一個標量值函數來填充連接值。
Create FUNCTION [dbo].[test]
(
@VariationData nvarchar(max)
)
RETURNS nvarchar(max)
AS
BEGIN
Declare @val nvarchar(max)
select @val = COALESCE(@val+', ','')+ Value from OPENJSON(@VariationData)
With ([Value] NVARCHAR(MAX) N'$.Value[0]')
return @val
END
使用嵌套的JSON值調用函數,即
Select [dbo].[test] (@JSON);
這對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.