【发布时间】:2019-10-31 21:17:04
【问题描述】:
假设我们有这些数据
CREATE TABLE [dbo].[tValues]
(
[cValue] [VARCHAR](50) NULL
) ON [PRIMARY]
INSERT INTO [dbo].[tValues] ([cValue])
VALUES ('red'), ('green'), ('blue'), ('brown')
从这个查询:
SELECT
(JSON_QUERY((SELECT
'Ball' AS title,
'20cm' AS size,
(SELECT cValue FROM tValues FOR JSON PATH) AS [colors]
FOR JSON PATH))) AS product
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
我得到了这个 JSON 结果:
{
"product": [
{ "title":"Ball",
"size":"20cm",
"colors": [
{ "cValue": "red" },
{ "cValue": "green" },
{ "cValue": "blue" },
{ "cValue": "brown" }
]
}
]
}
但我需要在colors 标签中没有列名和大括号,如下所示:
{
"product": [
{
"title": "Ball",
"size": "20cm",
"colors": [ "red", "green", "blue", "brown" ]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}
]
}
我该怎么做?
【问题讨论】:
-
从 SQL-Server 2017 开始有
STRING_AGG(),但实际上,这应该包含在FOR JSON语法中......
标签: sql json tsql sql-server-2016