簡體   English   中英

在SQL Server中連接嵌套的JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM