JSON_MODIFY删除数组对象

时间:2017-04-15 20:50:53

标签: sql sql-server tsql

如何从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中找不到任何说明如何从数组中删除对象的内容。

1 个答案:

答案 0 :(得分:1)

我还没与json合作,但是,因为它是一个字符串,你可以做到这一点;

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

注意我目前无法测试此代码。