详解SQL Server 中 JSON_MODIFY 的使用

 更新时间:2019年11月14日 09:39:29   作者:返回主页 Love it or leave it  
SQL Server 从 2016 开始支持了一些 JSON操作,最近的项目里也是好多地方字段直接存成了 JSON,需要了解一下怎么在SQL Server 中操作 JSON.这篇文章主要介绍了SQL Server 中 JSON_MODIFY 的使用,需要的朋友可以参考下

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

https://docs.microsoft.com/en-us/sql/t-sql/functions/json-modify-transact-sql?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/relational-databases/json/json-path-expressions-sql-server?view=sql-server-ver15

总结

以上所述是小编给大家介绍的SQL Server 中 JSON_MODIFY 的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 列出SQL Server中具有默认值的所有字段的语句

    列出SQL Server中具有默认值的所有字段的语句

    上个星期我在对一个供应商开发的数据库按规定进行故障排除的时候,我们需要对他们数据库中50个表的每一个都进行查看,以确保所有期望是默认值的字段都被分配了默认值。你可以想象这是一个多么令人畏惧的工作,而我立即提出了这个问题。有没有一个比在SQL Server管理套件中打开每一个表来查看这个schema的更好方法吗?
    2008-10-10
  • 人工智能自动sql优化工具--SQLTuning for SQL Server

    人工智能自动sql优化工具--SQLTuning for SQL Server

    SQL语句是对数据库进行操作的惟一途径,对数据库系统的性能起着决定性的作用。对于同一条件下的SQL语句写法有很多,其中一些写法往往对性能又有很大影响。但是每个人掌握SQL语言的水平不同,如何才能保证写出高性能的SQL呢?
    2014-08-08
  • SQL Server ltrim(rtrim()) 去不掉空格的原因分析

    SQL Server ltrim(rtrim()) 去不掉空格的原因分析

    这篇文章主要介绍了SQL Server ltrim(rtrim()) 去不掉空格的原因分析,原因主要是因为中间存在回车符或者换行符,所以要先将此符号替换掉,具体示例代码大家参考下本文
    2017-08-08
  • 使用mongovue把sqlserver数据导入mongodb的步骤

    使用mongovue把sqlserver数据导入mongodb的步骤

    MongoVUE免费版支持MySQL导入Mongo,所以思路是SQLServer导入MySQL,再从MySQL导入Mongo。
    2014-01-01
  • sqlserver中Case的使用方法(上下篇)

    sqlserver中Case的使用方法(上下篇)

    Case具有两种格式。简单Case函数和Case搜索函数。
    2010-09-09
  • SqlServer 表连接教程(问题解析)

    SqlServer 表连接教程(问题解析)

    这篇文章主要介绍了SqlServer 表连接问题及解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • SQL Server2022数据库安装及配置过程

    SQL Server2022数据库安装及配置过程

    最近发现有诸多的小伙伴们对于sqlserver安装教程2022,sql server安装教程这个问题都颇为感兴趣的,这篇文章主要给大家介绍了关于SQL Server2022数据库安装及配置的相关资料,需要的朋友可以参考下
    2023-12-12
  • MS SQL Server游标(CURSOR)的学习使用

    MS SQL Server游标(CURSOR)的学习使用

    使用MS SQL Server这样久,游标一直没有使用过。以前都是使用WHILE循环加临时表来实现。刚刚联系个示例了解到游标概念与语法
    2014-06-06
  • SQLServer中master数据库分析

    SQLServer中master数据库分析

    sql下master数据库分析,了解下master数据库主要是做什么用的
    2008-04-04
  • SQL Server2019数据库备份与还原脚本(批量备份)

    SQL Server2019数据库备份与还原脚本(批量备份)

    本文主要介绍了SQL Server2019数据库备份与还原脚本,数据库可批量备份,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论