SQL到JSON-对象数组到带有UNION ALL的值数组

问题描述 投票:0回答:1

如何使下面的查询有效

我使用了另一个问题SQL Server 2016 JSON: Select array of strings instead of array of objects中的概念

但是当我尝试下面的选择时,它不起作用

SELECT
(
    SELECT line AS "line" FROM (
        SELECT CONCAT(
                '5th'
        , ' ',  '566'
        ) AS "line"
        UNION ALL
        SELECT 'Complement' AS LINE
    )
FOR JSON PATH)
AS "address.lines"

SQL Server的版本SELECT @@VERSION = Microsoft SQL Server 2016

查询的结果是

消息156,第15级,状态1,第11行

关键字“ FOR”附近的语法不正确。

我需要使用UNION ALL,因为我在同一个表中有两个不同的值,以在JSON结果中生成一个名为address.lines的数组

json sql-server
1个回答
1
投票
如果我正确理解了您的问题,则只需要一个别名(t):

声明:

SELECT ( SELECT [Line] FROM ( SELECT CONCAT('5th', ' ', '566') AS [Line] UNION ALL SELECT 'Complement' AS [Line] ) t FOR JSON PATH ) AS "address.lines"

输出:

address.lines [{"Line":"5th 566"},{"Line":"Complement"}]

© www.soinside.com 2019 - 2024. All rights reserved.