/ / Usuń tablicę z obiektu json przechowywanego w kolumnie SQL Server - json, sql-server

Usuń tablicę z obiektu json przechowywanego w kolumnie SQL Server - json, sql-server

Jeśli mam następujący kod JSON przechowywany w kolumnie w programie SQL Server:

declare @json nvarchar(max) = "[{"id": "1", "name": "test1"},{"id": "2", "name": "test2"},{"id": "3", "name": "test4"}]"

jak mogę usunąć tablicę, w której Id: = 1?

Chcę uzyskać następujący wynik:

[{"id": "2", "name": "test2"},{"id": "3", "name": "test4"}]

Odpowiedzi:

0 dla odpowiedzi № 1

Spróbuj tego:

    declare @json nvarchar(max) = "[{"id": "1", "name": "test1"},{"id": "2", "name": "test2"},{"id": "3", "name": "test4"}]";


DECLARE @IdTobeRemoved INT =1;
DECLARE @StartIndex INT
DECLARE @EndIndex INT
DECLARE @tempjson nvarchar(max)



SELECT @StartIndex = CHARINDEX(""id": ""+CONVERT(VARCHAR(10),@IdTobeRemoved)+""",@json)-2


SELECT @tempjson = STUFF(@json, 1, @StartIndex, "")


SELECT @EndIndex =
CASE WHEN SUBSTRING(@tempjson,CHARINDEX("}",@tempjson)+1,1)="]"
THEN CHARINDEX("}",@tempjson)+1
ELSE CHARINDEX("}",@tempjson)+2
END


SELECT REPLACE(REPLACE(@json,SUBSTRING(@tempjson,0,@EndIndex),""),"},]","}]")