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 № 1Spró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),""),"},]","}]")