首页 > 解决方案 > 选择查询以在一行中打印为 JSON 列表

问题描述

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

假设我有这样的数据:

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

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

如何获得这样的值:

["foo", "bar"]

标签: sqljsonsql-servertsql

解决方案


我认为您正在查看 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')

推荐阅读