SQL Server 2016 的JSON功能
来源:互联网 发布:java初级中级高级区别 编辑:程序博客网 时间:2024/06/07 17:02
测试一下基本的,从查询结果里面构造一个json 的格式
create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int)insert into t1 values ('张三',90,80),('李四',75,90),('王五',68,100)select * from t1select * from t1 for json auto--查询结果ID name Chinese Math----------- -------------------------------------------------- ----------- -----------1 张三 90 802 李四 75 903 王五 68 100--json 格式[{"ID":1,"name":"张三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100}]
这个是默认模式下面使用json的查询结果。是不是十分清晰
然后我们再接再厉,第二波是这样纸的。假如我们要继续搞有层级关系的。我们还可以这样写。比方说把成绩放在一个叫points 的节点里面, 也是可以分层的
select ID, name, Chinese as [Points.Chinese], Math as [Points.Math] from t1 for json path--结果json[{"ID":1,"name":"张三","Points":{"Chinese":90,"Math":80}},{"ID":2,"name":"李四","Points":{"Chinese":75,"Math":90}},{"ID":3,"name":"王五","Points":{"Chinese":68,"Math":100}}]
他们的分数就放在了json 里面的,被一个point 包住了。
如果说我要在这个结果里面添加一个头来包住,当然,我可以使用每个列来个别名 [root.col] 来实现,然而就有点啰嗦了。所以我们可以使用这个root 的关键字来添加一个顶节点
select ID, name, Chinese as [Points.Chinese], Math as [Points.Math] from t1 for json path,root('root') --返回的json结果{"root":[ {"ID":1,"name":"张三","Points":{"Chinese":90,"Math":80}}, {"ID":2,"name":"李四","Points":{"Chinese":75,"Math":90}},{"ID":3,"name":"王五","Points":{"Chinese":68,"Math":100}}]}
当然咯,查询嘛,录入数据总是难免遇到null值,在这方面,for json 是如何处理的呢? 我在测试表添加一条数据在来查询
insert into t1 values ('赵六',100,null)select ID, name, Chinese as [Points.Chinese], Math as [Points.Math] from t1 where id in(3, 4) for json auto--json的返回结果[{"ID":3,"name":"王五","Points.Chinese":68,"Points.Math":100},{"ID":4,"name":"赵六","Points.Chinese":100}]
auto 模式下,如果是空值,将会忽略该属性。这样的话很容易就每一个集合返回的属性数量都不一来,这样不好看。所以应对这种情况,我们可以使用 incluede_null_values 关键字,即使是空值,也带出来
select ID, name, Chinese as [Points.Chinese], Math as [Points.Math] from t1 where id in(3, 4) for json auto, include_null_values--json 的返回结果[{"ID":3,"name":"王五","Points.Chinese":68,"Points.Math":100},{"ID":4,"name":"赵六","Points.Chinese":100,"Points.Math":null}]
使用了这个关键字,就可以把空值带出来,里面的值是Null 值
好,本次实验到此为止~然后我试下解析json 的语法之类的再分享~
感想就是其实语法应该跟xml类型的相差无几~但是数据库之前支持了xml 数据类型,然后json却只能通过字符串去转换解析。
0 0
- SQL Server 2016 的JSON功能
- SQL Server的复制功能
- SQL Server Browser的功能
- SQL Server 2016新特性: 对JSON的支持
- [sql server] sql server 2005 SSMS的数据库右键功能
- Microsoft SQL Server 2000 的国际化功能
- sql server 2000 支持的 xpath 功能
- Microsoft SQL Server 2000 的国际化功能
- SQL Server 2005新增的功能
- SQL Server 2005 的新增功能
- SQL Server 2008的审核功能
- SQL Server 2008的审核功能
- SQL Server 2008 的CDC功能
- 令人兴奋的sql server 2005 分页功能!!
- SQL server实现split功能的函数
- 令人兴奋的sql server 2005 分页功能
- 三分钟学会Sql Server的复制功能
- 开启SQL server的缓存功能
- react-native入门之快速入门---返回键实现
- winform程序两个窗体间同步数据(三):建立父窗口与子窗口的父子关系(不使用线程)
- Java学习笔记-数组的三种初始化方式
- 海康相机RTSP连接代码分析
- IOS设置窗口方向
- SQL Server 2016 的JSON功能
- Programming Collective Intelligence 学习笔记第一章
- react native 一次内存泄漏分析
- 第三方免费加固横向对比(转)
- 关于camera be called after release()的异常
- toString()方法
- 恢复BIOS usb support
- 1034. 有理数四则运算(20)
- 广度优先搜索(Breadth First Search,BFS)