[英]Concatenate nested JSON in SQL Server
I am trying to concatenate nested JSON in SQL, how to do that. 我试图在SQL中连接嵌套的JSON,如何做到这一点。
Please help me out with this. 这个你能帮我吗。
Example: I have JSON Like below . 示例: 我有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": []
}
]
I want Out Put: 我想要外出:
Pack of 24 Dare Cards-12 Willy Shot Glass and 12 Hen Boppers
If Value always contains one element 如果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]')
Support of multiple value s is also easy. 支持多个值也很容易。
SELECT STRING_AGG(Val, '-')
FROM OPENJSON(@JSON)
WITH (VALUE NVARCHAR(MAX) '$.Value' AS JSON)
OUTER APPLY OPENJSON(VALUE) WITH (Val NVARCHAR(MAX) '$')
This one I achieved with creating a scalar-valued function to populate concatenated value. 我通过创建一个标量值函数来填充连接值。
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
Call function with nested JSON value ie 使用嵌套的JSON值调用函数,即
Select [dbo].[test] (@JSON);
This worked for me. 这对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.