1

从以下查询中,我得到的结果为:

"Units": "[{\"Name\":\"Unit25\"}]",

查询是复制此结果的以下查询,我已经简化了查询实际使用的查询,但基于选择是这样的:

SELECT (      
SELECT *
  FROM (      
        SELECT
           JSON_QUERY(COALESCE((SELECT [Name] FROM (
                    SELECT [Name] 
                    FROM [TableA]                                                       
                    UNION 

                    SELECT TOP 3 [Name] 
                    FROM [TableB]) [T]
                    FOR JSON PATH),'[]')) AS [Units]
            FROM [User] [U]

               UNION

      SELECT
        JSON_QUERY(COALESCE((SELECT [Name] FROM (
                    SELECT [Name] 
                    FROM [TableA]                                                       
                    UNION 

                    SELECT TOP 3 [Name] 
                    FROM [TableB]) [T]
                    FOR JSON PATH),'[]')) AS [Units]
        FROM [Contact] [C]
         ) [Data] 
    FOR JSON PATH, INCLUDE_NULL_VALUES)

预期结果 :

"Units": "[{"Name":"Unit25"}]",

如何实现?

4

1 回答 1

0

这里的问题是在语句JSON_QUERY之​​前使用会以某种方式破坏 json 转义。UNION可能您可以使用JSON_QUERY作为最外层的语句来修复您的查询:

select JSON_QUERY(units) as Units from
(
    SELECT
        COALESCE((SELECT [Name] FROM (
                SELECT [Name] 
                FROM [TableA]                                                       
                UNION 

                SELECT TOP 3 [Name] 
                FROM [TableB]) [T]
                FOR JSON PATH),'[]')  AS [Units]
        FROM [User] [U]
           UNION
  SELECT
     COALESCE((SELECT [Name] FROM (
                SELECT [Name] 
                FROM [TableA]                                                       
                UNION 

                SELECT TOP 3 [Name] 
                FROM [TableB]) [T]
                FOR JSON PATH),'[]')  AS [Units]
    FROM [Contact] [C]
) u
FOR JSON auto, INCLUDE_NULL_VALUES

结果:

在此处输入图像描述

于 2018-09-11T13:03:02.273 回答