2016-09-19 13 views
2

我正在使用SQL Server 2016,它支持JSON PATH返回JSON字符串。 我不知道如何得到一個簡單的空json數組,我的意思是[]當我的查詢或子查詢返回null。我試過此查詢:如何強制SQL Server返回空JSON數組

SELECT '' AS TEST 
FOR JSON PATH,ROOT('arr') 

返回:

{"arr":[{"test":""}]} 

而且這一個:

SELECT NULL AS TEST 
FOR JSON PATH,ROOT('arr') 

返回:

{"arr":[{}]} 

它的更好,但仍不正確,我需要這個:

{"arr":[]} 

回答

0

有點手冊,但如果你需要一個快速的黑客,在這裏你去:

DECLARE @JSON NVARCHAR(MAX) = (SELECT NULL AS test 
FOR JSON PATH,ROOT('arr')) 


SELECT REPLACE(@json, '{}', '') 
0

您可以隨時與ISNULL檢查這一點,如:

select ISNULL((SELECT * FROM sys.tables where 1=2 FOR JSON PATH), '[]') 

如果您需要這在應用層,也許最好檢查一下數據訪問代碼中是否設置了一些結果,如果不是,則返回[]或{}。

1

這工作,並且可以在另一個for json查詢內組成:

select json_query('[]') arr 
    for json path, without_array_wrapper