为了账号安全,请及时绑定邮箱和手机立即绑定

SqlServer 操作 JSON

标签:
SQL Server

Intro

Sql Server 从 2016 开始支持了一些 json 操作,最近的项目里也是好多地方直接用字段直接存成了 json ,需要了解一下怎么在 Sql Server 中操作 JSON.
JSON支持适用于 SqlServer 2016 及以上版本 和 Azure SQL Database。

SqlServer 中内置了一些 JSON 相关的方法:
可以判断一段字符串是否是标准的 json(ISJSON
可以直接查询数据成 json 格式(FOR JSON PATH) 类似于之前的查询一个 xml (FOR XML PATH),
查询一个 json 对象的值(JSON_VALUE)
查询一个 json 数组值
更新一段JSON的内容,修改 JSON 对象里的属性值,删除 JSON 对象里的某一个属性,增加属性
解析一段 json 内容 (OPENJSON)

JSON 操作

JSON 存储

数据库里 JSON 存储一般用 NVARCHAR(MAX) 类型来保存,如果一定是 JSON 形式的数据可以设置一个约束,可以通过 ISJSON 来给字段加约束,详情参考

JSON 属性加索引

要给 JSON 对象的某个属性加字段时,需要增加一个虚拟的列,然后在这个列中建立一个索引。

CopyALTER TABLE Sales.SalesOrderHeaderADD vCustomerName AS JSON_VALUE(Info,'$.Customer.Name')CREATE INDEX idx_soh_json_CustomerNameON Sales.SalesOrderHeader(vCustomerName)

JSON 基本操作

Copy{    "name": "小明",    "info": {        "address": {            "province": "河南省",            "city": "郑州市",            "district": "郑东新区"
        },        "hobbies": [            "篮球",            "足球",            "乒乓球"
        ]
    }
}
Copy-- 查询某一属性值SET @name = JSON_VALUE(@jsonInfo, '$.name');SET @city = JSON_VALUE(@jsonInfo, '$.info.address.city');-- 查询数组SET @hobbies = JSON_QUERY(@jsonInfo, '$.info.hobbies');-- 增加属性 tempPropSET @jsonInfo = JSON_MODIFY(@jsonInfo, 'tempProp', 1);-- 删除属性 tempPropSET @jsonInfo = JSON_MODIFY(@jsonInfo, 'tempProp', null);

Reference

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文出处:https://www.cnblogs.com/weihanli/p/sqlserver-json-support.html  

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消