如何从VARCHAR(MAX)
JSON数组中删除对象?
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"}]
一切都很好。
0
@Json
SELECT JSON_MODIFY(@Json, '$[0]', NULL)
结果
[null,{"u":"user2","i":"item2"}]
我不希望索引0
为空。我希望它被删除。
我在the docs中找不到任何说明如何从数组中删除对象的内容。
答案 0 :(得分:1)
我还没与json合作,但是,因为它是一个字符串,你可以做到这一点;
SET @Json = JSON_MODIFY(@Json, '$[0]', NULL);
SET @Json = STUFF(@Json, CHARINDEX ('null,', 5, '');
注意我目前无法测试此代码。