详解SQL Server 中 JSON_MODIFY 的使用
- 作者: 八星斗圣巅峰
- 来源: 51数据库
- 2021-08-19
sql server 中 json_modify
的使用
intro
sql server 从 2016 开始支持了一些 json操作,最近的项目里也是好多地方字段直接存成了 json,需要了解一下怎么在sql server 中操作 json.
json支持适用于 sql server 2016 及以上版本 和 azure sql database。
最近在项目中很多地方字段都是存一个 json
字符串,尤其是针对一些有很多不确定的属性的数据来说,这样的信息我们一般都放在一个 extra
之类的字段保存一个 json
字符串,由于不确定性很大,很有可能会遇到要修改这个 json
字符串结构的问题,在修改 json
对象的某一个值和修改 json
的结构时都会用到 json_modify
,今天就来介绍一下 json_modify
的使用
示例
直接来看示例:
-- 适用 append 在数组中追加元素 print json_modify(@testjsonvalue, 'append $.skills', 'azure'); -- 无效用法,这样会把属性更新为字符串 print json_modify(@testjsonvalue, '$.skills', '["c#","t-sql","azure"]'); -- 修改数组 print json_modify(@testjsonvalue, '$.skills', json_query('["c#","t-sql","azure"]')); -- 修改数组某个元素 print json_modify(@testjsonvalue, '$.skills[0]', 'csharp'); -- 增加属嵌套 print json_modify(@testjsonvalue, '$.likes', json_query('{"girl": "alice"}')); print json_modify(@testjsonvalue, '$.likes', json_query('{"animals": ["dog","cat"]}')); -- 增加 bool 属性 print json_modify(@testjsonvalue, '$.showawardsafterquizends', convert(bit, 'false')); print json_modify(@testjsonvalue, '$.showawardsafterquizends', convert(bit, 1)); -- 增加 int 属性 print json_modify(@testjsonvalue, '$.totalwinnerscount', convert(int, '20')); print json_modify(@testjsonvalue, '$.totalwinnerscount', 20); -- 删除属性 print json_modify(@testjsonvalue, '$.name', null);
输出结果如下图:
more
注意:
- 如果要更新的字段没有是一个 json 对象或是一个数组,那么需要使用
json_query
,否则更新的对应的属性就成了字符串了。 - 如果是要删除某一个属性,把某一个属性更新为
null
即可 - 如果要增加一个 bool 类型的属性,需要把对应的值转换为 bit 类型
reference
总结
以上所述是小编给大家介绍的sql server 中 json_modify 的使用,希望对大家有所帮助
推荐阅读
- SQLite数据库操作:原生操作,GreenDao操作讲解
- 数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
- SQLSERVER查询区分大小写的写法分析
- SQL学习总结之SQL的分类介绍
- 阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
- 高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
- 什么是SQL隔离级别?四个SQL隔离级别定义介绍
- Sql递归介绍之用with实现递归查询
- SQLSERVER查询时日期格式化的实例讲解
- 数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
热点文章
SQLite数据库操作:原生操作,GreenDao操作讲解
18
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
4
SQLSERVER查询区分大小写的写法分析
36
SQL学习总结之SQL的分类介绍
6
阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
4
高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
4
什么是SQL隔离级别?四个SQL隔离级别定义介绍
2
Sql递归介绍之用with实现递归查询
6
SQLSERVER查询时日期格式化的实例讲解
4
数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
7