2017-04-15 119 views
2

如何從VARCHAR(MAX) JSON陣列中刪除對象?JSON_MODIFY刪除陣列對象

設置
DECLARE @Json VARCHAR(MAX) = 
JSON_QUERY('[{"u":"user1","i":"item1"},{"u":"user2","i":"item2"}]') 

SELECT @Json 

DECLARE @NewJson VARCHAR(MAX) = 
JSON_QUERY('{"u":"user3","i":"item3"}') 

SELECT @NewJson 

結果

[{"u":"user1","i":"item1"},{"u":"user2","i":"item2"}] 

{"u":"user3","i":"item3"} 

追加@NewJson@Json

SELECT JSON_MODIFY(@Json, 'append $', JSON_QUERY(@NewJson)) 

結果

[{"u":"user1","i":"item1"},{"u":"user2","i":"item2"},{"u":"user3","i":"item3"}] 

一切都好。從@Json

SELECT JSON_MODIFY(@Json, '$[0]', NULL) 

結果

[null,{"u":"user2","i":"item2"}] 

刪除索引0我不想指數0爲空。我希望它被刪除。

我在the docs中找不到任何說明如何從數組中刪除對象的內容。

回答

1

我還沒有與JSON合作,但是,因爲它是一個字符串,你可以這樣做;

SET @Json = JSON_MODIFY(@Json, '$[0]', NULL); 
SET @Json = STUFF(@Json, CHARINDEX ('null,', 5, ''); 

注意我目前無法測試此代碼。

+0

漂亮哈克,但我想它的工作原理如果TSQL不提供本機功能。 – kspearrin