服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - SQL Server解析/操作Json格式字段数据的方法实例

SQL Server解析/操作Json格式字段数据的方法实例

2022-08-29 13:50miaoao611 Sql Server

SQL SERVER没有自带的解析json函数,需要自建一个函数(表值函数),下面这篇文章主要给大家介绍了关于SQL Server解析/操作Json格式字段数据的相关资料,需要的朋友可以参考下

1 json存储

在sqlserver 中存储json ,需要用字符串类型进行存储,一般用nvarchar()或 varchar()进行存储,不要用text进行存储,用text时候,json的函数不支持。

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 表:

?
1
2
3
4
5
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操作相关的函数

?
1
2
3
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。

?
1
2
3
4
SELECT
    IsJson(json_detail) as IsJson
from
    demo_plus.dbo.wm_json_demo

SQL Server解析/操作Json格式字段数据的方法实例

Json_Value:从Json字段中提取值

用法:Json_Value (cloumn_name,’$.json_field_name’) from table

Json_Query:Json字符串中提取对象或数组。

用法:Json_Query (cloumn_name,’$.json_field_name’) from table

?
1
2
3
4
5
6
7
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;

SQL Server解析/操作Json格式字段数据的方法实例

Json_Modify:更新Json字符串中的属性值,并返回更新的Json字符串。

JSON_MODIFY(column_name, ‘$.json_field’, ‘change_info’);

?
1
2
3
4
5
6
7
8
9
SELECT
    JSON_MODIFY(json_detail,
    '$.value1',
    11) as json_detail
from
    demo_plus.dbo.wm_json_demo
where
    JSON_VALUE(json_detail,
    '$.key')= 7;

SQL Server解析/操作Json格式字段数据的方法实例

3其他

这里附上官网地址,有兴趣的小伙伴可以去看看:https://docs.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15

总结

到此这篇关于SQL Server解析/操作Json格式字段数据的文章就介绍到这了,更多相关SQLServer解析操作Json内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/miaoao611/article/details/124608044

延伸 · 阅读

精彩推荐