在 SQL Server 操作 JSON

宣告 JSON 字串

1
2
3
DECLARE @json NVARCHAR(MAX);

SET @json = '{"info": {"address": [{"town": "Belgrade"}, {"town": "Paris"}, {"town":"Madrid"}]}}';

JSON_VALUE 擷取純量值字串

1
SELECT JSON_VALUE(@json, '$.info.address[0].town');

JSON_QUERY 擷取物件或陣列字串

1
SELECT JSON_QUERY(@json, '$.info.address');

JSON_MODIFY 變更 JSON 字串中的值

1
2
3
SET @json = JSON_MODIFY(@json, '$.info.address[1].town', 'London');

SELECT modifiedJson = @json;

JSON 轉換為資料列

解析 JSON 字串資料,需預先定義對應格式

1
2
3
4
SELECT *
FROM OPENJSON(JSON_QUERY(@json, '$.info.address')) WITH (
town NVARCHAR(50) '$.town'
);