尝试一下sql server2016里面的json功能
前2天下载了一个2016的rc版本来玩一下,首先感觉是~开发者版本免费啦!!撒花!!!另外一个东西,sql server 2016能支持json 的解析和应用啦,虽然我不知道它的性能如何,先来一发测试一下功能
测试一下基本的,从查询结果里面构造一个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 t1
select * from t1 for json auto
--查询结果
ID name Chinese Math
----------- -------------------------------------------------- ----------- -----------
1 张三 90 80
2 李四 75 90
3 王五 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却只能通过字符串去转换解析。这个后面我再实验一下
尝试一下sql server2016里面的json功能的更多相关文章
- sql server2016里面的json功能 - 转
测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...
- 继续说一下2016里面的json功能(1)
首先先来测试数据,数据是使用之前的,就 不要在意这些细节了啊~ 借用上一篇的测试数据 ),Chinese int ,Math int) ,),(,),(,),(,null); 然后我们使用这个表里面生 ...
- SQL Server2016 原生支持JSON
SQL Server2016 原生支持JSON SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML 索引以及各种管理 XML 或输出 XML 格式的函数. ...
- SQL Server 2016 的JSON功能
测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...
- 安卓里面JSON处理和JAVA SE里面的JSON包
今天编译安卓项目遇到这个问题 com.android.dex.DexException: Multiple dex files define的解决办法 大致意思就是引用了 相同的包 在JAVA SE里 ...
- ASP.NET获取百度地图提供的API接口里面的JSON
思路:开始是想直接在前台获取,但是跨域访问还是有点难度,而且格式必须是josnp格式的,最后嫌麻烦,不得已放弃. 我做的ASP.NET 而这个有自带的解析类,直接引用就行了 先在后台获取到JOSN: ...
- sql server 里面的 dynamic Data Masking
有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特 ...
- 读取文件 读取项目里面的json
ClassPathResource resource = new ClassPathResource("properties/post2LazadaTest.json"); Fil ...
- SQL Server2016 新功能实时查询统计信息
SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...
随机推荐
- PagerTabStrip及自定义的PagerTab
如图是效果图 开发中经常会用到上面是一个Tab下面是一个ViewPager(ViewPager再包含几个Fragment),当点击Tab或是滑动ViewPager,Tab及ViewPager ...
- Centos压缩与打包
这个虽然是基础知识,但是有些东西就是这样,久了没用,就会忘记,而且之前有一个坏习惯就是不喜欢做笔记,以后学习了行东西一定要记录在博客,这样以后自己也能时不时的查看一下. 言归正传,在计算机的世界中,数 ...
- js 关于日期
new Date() 获取当前的完整日期 : 如 2016-12-30 new Date().getFullYear() 获取当前的年份 new Date().getMonth() 获取当前的月份( ...
- JSON字符串和java对象的互转【json-lib】
在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...
- IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream
一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...
- css知多少(9)——float下篇
float内容比较多,咱们分上.下两篇来介绍,上篇已经写完,这是下篇.建议大家先把上篇看了,再来看下文,精彩内容不要掠过啊. 1. 清除float <上篇>中我们提到,float具有“破坏 ...
- Mondrian – 开源的矢量图形 Web 应用程序
Mondrian 是一个免费矢量图形 Web 应用程序,类似 Adobe Illustrator 或 Inkscape.Mondrian 提供所有所需的工具来创建.修改和导出简单的 SVG 文件,过历 ...
- JavaScript 事件绑定及深入
一.传统事件绑定的问题 解决覆盖问题,我们可以这样去解决:window.onload = function () { //第一个要执行的事件,会被覆盖 alert(1);};if (typeof wi ...
- html5音频和视频标签
在html5之前的版本中如果想要在网页中插入音频和视频必须要安装插件才可以,比如最常见的flash插件.很多人在刚安装一款浏览器的时候都会遇到浏览器建议安装flash插件,在移动端也是如此.如果想要在 ...
- HTML5夜空烟花绽放动画效果
模板描述:HTML5夜空烟花绽放动画效果基于HTML5 canvas制作,模拟夜空烟花绽放动画效果,烟花会在夜空打出贺词,有新年快乐.合家幸福.万事如意.心想事成.财源广进等,文字可以自定义,做成各种 ...