2 json操作
主要介绍5个函数:
(1)openjson:打开json字符串
(2)isjson:判断一个字符串是不是合法的json格式。是返回1,否返回0,null返回null。
(3)json_value:从json字符串中提取值。
(4)json_query:json字符串中提取对象或数组。
(5)json_modify:更新json字符串中的属性值,并返回更新的json字符串。
新建wm_json_demo 表:
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) );
下面以wm_json_demo 为例,演示以上5个json操作相关的函数
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格式。是返回1,否返回0,null返回null。
select isjson(json_detail) as isjson from demo_plus.dbo.wm_json_demo
json_value:从json字段中提取值
用法:json_value (cloumn_name,’$.json_field_name’) from table
json_query:json字符串中提取对象或数组。
用法:json_query (cloumn_name,’$.json_field_name’) from table
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 value3 from demo_plus.dbo.wm_json_demo;
json_modify:更新json字符串中的属性值,并返回更新的json字符串。
json_modify(column_name, ‘$.json_field’, ‘change_info’);
select json_modify(json_detail, '$.value1', 11) as json_detail from demo_plus.dbo.wm_json_demo where json_value(json_detail, '$.key')= 7;