我遇到了关于json结果的联合操作的问题,因为我的嵌套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_QUERY结果转义了双引号。有人可以帮帮我吗?
答案 0 :(得分:2)
您的查询将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
)