SQL Server解析/操作Json格式字段数据的方法实例
在SQL Server中,可以使用以下方法解析和操作JSON格式字段数据:
- 存储JSON:在SQL Server中存储JSON时,应使用字符串类型,如nvarchar()或varchar(),而不是text类型,因为text类型不支持JSON函数。
- JSON操作:主要介绍五个函数:
openJson:打开JSON字符串。
IsJson:判断一个字符串是否为合法的JSON格式。如果是,返回1;如果不是,返回0;如果是null,则返回null。
Json_Value:从JSON字符串中提取值。
Json_Query:从JSON字符串中提取对象或数组。
Json_Modify:更新JSON字符串中的属性值,并返回更新后的JSON字符串。
以下是一个示例,展示如何使用这些函数:
- 创建表并插入数据:
CREATE TABLE demo_plus.dbo.wm_json_demo ( id int IDENTITY(1,1) NOT NULL, json_detail varchar(max) NOT NULL, CONSTRAINT PK_wm_json_demo PRIMARY KEY (id));INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":3,"value1":10,"value2":[{"vv21":13,"vv22":103}],"value3":null}');INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":4,"value1":15,"value2":[{"vv21":13,"vv22":103}],"value3":"10"}');INSERT INTO demo_plus.dbo.wm_json_demo (json_detail) VALUES('{"key":7,"value1":20,"value2":[{"vv21":13,"vv22":103}],"value3":"15"}');- 使用IsJson函数判断字符串是否为合法的JSON格式:
SELECT IsJson(json_detail) as IsJsonfrom demo_plus.dbo.wm_json_demo- 使用Json_Value和Json_Query函数从JSON字段中提取值和对象/数组:
SELECT JSON_VALUE(json_detail,'$.key') as 'key', JSON_VALUE(json_detail,'$.value1') as value1, JSON_value(json_detail,'$.value2') as value2, JSON_QUERY(json_detail,'$.value2') as value2_query, JSON_VALUE(json_detail,'$.value3') as value3from demo_plus.dbo.wm_json_demo;- 使用Json_Modify函数更新JSON字符串中的属性值:
SELECT JSON_MODIFY(json_detail, '$.value1', 11) as json_detailfrom demo_plus.dbo.wm_json_demowhere JSON_VALUE(json_detail, '$.key')= 7;此外,还可以参考SQL Server官方文档以获取更多信息:
SQL Server JSON 数据
。