转义嵌套json查询的Transact-SQL union all-on json结果

转义嵌套json查询的Transact-SQL union all-on json结果,sql,sql-server,tsql,json-query,Sql,Sql Server,Tsql,Json Query,我对json结果的union操作有问题,因为出于某种原因,我的嵌套json查询结果的双引号被转义,这会在我的应用程序中导致解析错误。以下是一个例子: SELECT DISTINCT s.*, JSON_QUERY((select * from SomeTable WHERE Id = 'some ID' FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)) AS ExampleColumn from [SomeOtherTable] sot where sot.Id =

我对json结果的union操作有问题,因为出于某种原因,我的嵌套json查询结果的双引号被转义,这会在我的应用程序中导致解析错误。以下是一个例子:

SELECT DISTINCT s.*,
JSON_QUERY((select * from SomeTable WHERE Id = 'some ID' FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)) AS ExampleColumn from [SomeOtherTable] sot where sot.Id = 'some other ID' 
UNION ALL
SELECT DISTINCT S1.*, JSON_QUERY((select * from SomeTable WHERE Id = 'some other other ID' FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)) AS ExampleColumn from [SomeOtherTable] sot1 where sot1.Id = 'some other other other ID' FOR JSON PATH

结果是正确的,只有嵌套的JSON_查询结果转义了双引号。有人能帮我吗?

您的查询将json转换为文本,这就是为什么第二个json将它们作为字符串进行处理并添加转义双引号的原因

你可以试试这个。我希望它能帮助你

SELECT STRING_AGG (JsonText,',') FROM (
    SELECT ( SELECT DISTINCT sot.*, ExampleColumn.*
             FROM 
                [SomeOtherTable] sot 
                OUTER APPLY(select * from SomeTable WHERE Id = 'some ID') AS ExampleColumn 
             WHERE 
                sot.Id = 'some other ID' FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER ) JsonText

    UNION ALL

    SELECT ( SELECT DISTINCT sot1.*, ExampleColumn.*
             FROM 
                [SomeOtherTable] sot1 
                OUTER APPLY((select * from SomeTable WHERE Id = 'some other other ID')) AS ExampleColumn 
             WHERE sot1.Id = 'some other other other ID' FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER ) JsonText
)

你能展示一下整个查询吗?你能用一些样本数据重现这个问题吗?若你们这样做的话,你们会很容易得到答案。