我是 SQL Server 中的 JSON 新手,不知道如何返回简单的字符串数组:
DECLARE @T TABLE ([value] NVARCHAR(MAX))
INSERT INTO @T ([value]) VALUES ('foo')
INSERT INTO @T ([value]) VALUES ('bar')
INSERT INTO @T ([value]) VALUES ('test')
INSERT INTO @T ([value]) VALUES ('ok')
SELECT [value]
FROM @T
FOR JSON PATH
这将返回一个对象数组:
[{"value":"foo"},{"value":"bar"},{"value":"test"},{"value":"ok"}]
我希望它返回:
["foo","bar","test","ok"]
这能做到吗?
最佳答案
以 Loui Bao 和 Roman 的答案为基础:
declare @t table ([value] nvarchar(max))
insert into @t ([value]) values ('foo')
insert into @t ([value]) values ('bar')
insert into @t ([value]) values ('test')
insert into @t ([value]) values ('ok')
SELECT
JSON_QUERY((SELECT CONCAT('["',STRING_AGG([value], '","'),'"]') FROM @t)) As MuhArray
OtherValue,
AnotherValue
FROM MyTableOValues
FOR JSON PATH
这将创建一个简单值的 JSON 有效数组并将其分配给属性 MuhArray。 JSON 输出将是:
[{
MuhArray: ["foo", "bar", "test", "ok"],
OtherValue: "Value",
AnotherValue: "AnotherValue"
}]
其中 OtherValue
和 AnotherValue
接收表中的任何对应值。通过一些摆弄,您还可以选择不将其构建为选择列表中的子查询,而是构建为主查询主体中的简单联接。在我看来,在选择列表中使用子查询可以消除对 distinct
关键字的需要。
关于arrays - SQL Server 2016 JSON : Select array of strings instead of array of objects,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453135/