首先先来测试数据,数据是使用之前的,就

不要在意这些细节了啊~

借用上一篇的测试数据
create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) insert into t1 values ('张三',90,80),('李四',75,90),('王五',68,100),('赵六',90,null);

然后我们使用这个表里面生成的json 来进行测试,最简单的例子

declare @v nvarchar(600) = N'[{"ID":1,"name":"张三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100},{"ID":4,"name":"赵六","Chinese":100}]'

select * from openjson(@v)
with (
ID int '$.ID',
name nvarchar(50) '$.name',
Math int '$.Math',
Chinese int '$.Chinese'
) ------------------------
ID name Math Chinese
----------- -------------------------------------------------- ----------- -----------
1 张三 80 90
2 李四 90 75
3 王五 100 68
4 赵六 NULL 100

就是最简答的将Json 解析成结果集的形式,如果节点不存在那么赋值则为空

其实也就跟openxml 的用法比较类似

然后用法2 ,可以解析出json 格式里面的格式,当openjson 后面没有加关键字with 的时候,则认为是解析出json本身的结构。比方说(因为使用格式化成文本在这个语句下面有点奇怪,所以就用结果集贴上来,有点乱,大家将就着)

declare @v nvarchar(600) = N'{"ID":1,"name":"张三","Chinese":90,"Math":80}'
select * from openjson(@v) key value type
ID 1 2
name 张三 1
Chinese 90 2
Math 80 2

前面2个都好理解,第三个位置,type 。类型,在openjson 的解析里面是这样

0  null

1 string

2 int

3 bool

4 array

5 object

这样就不奇怪刚刚类型那个值的显示了,ID,Math ,Chinese都是整形,姓名是字符串,然后再来一个例子

declare @v nvarchar(600) = N'{"ID":true,"name":null,"Chinese":9.9,"Math":"hello","arr":[1,2,3,4],"obj":{"name":"test"}}'
select * from openjson(@v) key value type
ID true 3
name NULL 0
Chinese 9.9 2
Math hello 1
arr [1,2,3,4] 4
obj {"name":"test"} 5

这里就可以看到,即使是9.9这样的类型,使用openjson 也是会认为是整形的,所以即使可以解析出来类型,但是也不要太相信它能给你带来准确的数据类型就对了。
有人可能问,那如果是一个json里面包含多个行对象,其实是可以用openjson with 的格式来解析的,那它怎么认定呢?比如说

declare @v nvarchar(600) = N'[{"ID":1,"name":"张三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100},{"ID":4,"name":"赵六","Chinese":100}]'

使用openjson来直接解析,很明显得出,4个列都是Object类型,仅此而已。

一般情况下,用的就是这部分咯~嗯~这次就到这里,下篇再写

继续说一下2016里面的json功能(1)的更多相关文章

  1. 尝试一下sql server2016里面的json功能

    前2天下载了一个2016的rc版本来玩一下,首先感觉是~开发者版本免费啦!!撒花!!!另外一个东西,sql server 2016能支持json 的解析和应用啦,虽然我不知道它的性能如何,先来一发测试 ...

  2. sql server2016里面的json功能 - 转

    测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...

  3. 安卓里面JSON处理和JAVA SE里面的JSON包

    今天编译安卓项目遇到这个问题 com.android.dex.DexException: Multiple dex files define的解决办法 大致意思就是引用了 相同的包 在JAVA SE里 ...

  4. ASP.NET获取百度地图提供的API接口里面的JSON

    思路:开始是想直接在前台获取,但是跨域访问还是有点难度,而且格式必须是josnp格式的,最后嫌麻烦,不得已放弃. 我做的ASP.NET  而这个有自带的解析类,直接引用就行了 先在后台获取到JOSN: ...

  5. 读取文件 读取项目里面的json

    ClassPathResource resource = new ClassPathResource("properties/post2LazadaTest.json"); Fil ...

  6. 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样

    在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": { "publish- ...

  7. SQL Server 2016 的JSON功能

    测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...

  8. 开启Windows8里面的Hyper-V虚拟机功能

    首先了解下什么是Hyper-V?也就是虚拟化技术,允许终端用户在同一台机器上运行多个操作系统,支持32位和64位系统,可以直接在Windows 8上创建自己的虚拟机.开启Hyper-V虚拟机需要更多的 ...

  9. js中json法创建对象(json里面的:相当于js里面的=)

    js中json法创建对象(json里面的:相当于js里面的=) 一.总结 json里面的:相当于js里面的= 4.json创建js对象解决命名冲突:多个人为同一个页面写js的话,命名冲突就有可能发生, ...

随机推荐

  1. WITH RECURSIVE and MySQL

    WITH RECURSIVE and MySQL If you have been using certain DBMSs, or reading recent versions of the SQL ...

  2. 第 27 章 CSS 传统布局[下]

    学习要点: 1.定位布局 2.box-sizing 3.resize 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS 早期所使用的传统布局,很多情况下,这些布局方式还是非常有用的. 一.定位布 ...

  3. .NET删除字节数组中的0字节

    private static byte[] Decode(byte[] packet) { ; while (packet[i] == 0) { --i; } ]; Array.Copy(packet ...

  4. GJM :自定义基于 VLC 的视频播放器 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  5. 实体类在Windows程序中的高级应用--------------------》》心境是一种境界。

    一.事务 我们在大家学到这,或多或少对事务都有一些理解了.今天的我也对事务有了更深一层的理解对我来说,我想与大家一起分享一下. 解析: 1.ADO.NET提供了事务处理功能 2.C#中开启事务 3.在 ...

  6. Hibernate(九)__OpenSessionInView解决懒加载问题

    什么是OpenSessionInView? 在hibernate中使用load方法时,并未把数据真正获取时就关闭了session,当我们真正想获取数据时会迫使load加载数据,而此时session已关 ...

  7. JavaScript for循环 闭包 【转】

    个网友问了个问题,如下的html,为什么每次输出都是5,而不是点击每个p,就alert出对应的1,2,3,4,5. <html > <head> <meta http-e ...

  8. JavaScript学习笔记-正则表达式(语法篇)

    正则表达式的模式规则是由一个字符系列组成的,包括所有字母和数字在内;大多数的字符(所有字母和数字)都是按字符的直接量来描述带匹配的字符;一些具有特殊语义的字符按照其特殊语义来进行匹配,有些字符需要通过 ...

  9. 深入理解javascript---如何编写高质量的代码?

    如何书写可维护的代码? 最小全局变量 JavaScript通过函数管理作用域.在函数内部声明的变量只在这个函数内部,函数外面不可用.另一方面,全局变量就是在任何函数外面声明的或是未声明直接简单使用的( ...

  10. Flex布局窥探(一)

    一.Flex布局是神马? Flex是Flexible Box的缩写,意为‘弹性布局’,用来为盒模型提供最大的灵活性. 任何容器都能被指定为Flex布局: .box{ display: flex; } ...