SELECT查询以一行形式打印为JSON列表

时间:2018-11-28 06:02:27

标签: sql json sql-server tsql

如何在单行的字符串列表中打印名称?

假设我有这样的数据:

SELECT XName FROM X_Table --(table has other columns too)

XName
-------------
Foo
Bar

如何获取这样的值:

["foo", "bar"]

2 个答案:

答案 0 :(得分:1)

从G.Stoynev链接中给出的示例中,您可以执行以下操作:

SELECT JSON_QUERY
(
    (
        SELECT JSON_QUERY
        (
            '[' + STUFF(( SELECT ',' + '"' + convert(varchar(10), XName) + '"' 
            FROM dbo.X_Table
            FOR XML PATH('')),1,1,'') + ']' 
        ) Categories  
        FOR JSON PATH , WITHOUT_ARRAY_WRAPPER 
    ), '$.Categories' 
)

答案 1 :(得分:0)

我认为您正在考虑将JSON转换和反转换语法结合起来,如下所示

See working demo

Declare @js nvarchar(max)

SET @js= (SELECT XName FROM X_Table for json path)

select * from  OPENJSON (@js) WITH ( Xname nvarchar(max) N'$.XName')

如果您想避免使用@js变量,可以这样做

select * from  OPENJSON 
((SELECT XName FROM XTable for json path))-- note double parenthesis
WITH ( Xname nvarchar(max) N'$.XName')