经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
SqlServer 操作 JSON
来源:cnblogs  作者:WeihanLi  时间:2018/11/27 10:11:34  对本文有异议

SqlServer?操作?JSON

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 对象的某个属性加字段时,需要增加一个虚拟的列,然后在这个列中建立一个索引。

  1. ALTER TABLE Sales.SalesOrderHeader
  2. ADD vCustomerName AS JSON_VALUE(Info,'$.Customer.Name')
  3. CREATE INDEX idx_soh_json_CustomerName
  4. ON Sales.SalesOrderHeader(vCustomerName)

JSON 基本操作

  1. {
  2. "name": "小明",
  3. "info": {
  4. "address": {
  5. "province": "河南省",
  6. "city": "郑州市",
  7. "district": "郑东新区"
  8. },
  9. "hobbies": [
  10. "篮球",
  11. "足球",
  12. "乒乓球"
  13. ]
  14. }
  15. }
  1. -- 查询某一属性值
  2. SET @name = JSON_VALUE(@jsonInfo, '$.name');
  3. SET @city = JSON_VALUE(@jsonInfo, '$.info.address.city');
  4. -- 查询数组
  5. SET @hobbies = JSON_QUERY(@jsonInfo, '$.info.hobbies');
  6. -- 增加属性 tempProp
  7. SET @jsonInfo = JSON_MODIFY(@jsonInfo, 'tempProp', 1);
  8. -- 删除属性 tempProp
  9. SET @jsonInfo = JSON_MODIFY(@jsonInfo, 'tempProp', null);

Reference

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号