如何在单行的字符串列表中打印名称?
假设我有这样的数据:
SELECT XName FROM X_Table --(table has other columns too)
XName
-------------
Foo
Bar
如何获取这样的值:
["foo", "bar"]
答案 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转换和反转换语法结合起来,如下所示
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')