2017-12-06 17 views
0

私は、次のJSONは、SQL Server内の列に格納されている場合:= 1:削除配列は、SQL Serverの列に格納された

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

は、どのように私は、配列IDを削除することができますか?

私は次のような結果を取得したい:

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

は、このJSONはアプリケーション層で終わるていますか?もしそうなら、あなたはLINQ文のような些細なことを使って、そこからストリップするのが良いと思うでしょう(これは.NETソリューションだと仮定します)。 – pimbrouwers

+0

あなたはSQL Server 2016を使用していますか? – Tanner

答えて

0

はこれを試してみてください。

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),''),'},]','}]') 
関連する問題