继续说一下2016里面的json功能(1)
首先先来测试数据,数据是使用之前的,就
不要在意这些细节了啊~
借用上一篇的测试数据 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类型,仅此而已。
一般情况下,用的就是这部分咯~嗯~这次就到这里,下篇再写
转载于:https://www.cnblogs.com/Gin-23333/p/5402859.html
继续说一下2016里面的json功能(1)相关推荐
- sql server2016里面的json功能 - 转
测试一下基本的,从查询结果里面构造一个json 的格式 create table t1(ID int identity,name nvarchar(50),Chinese int ,Math int) ...
- 使用go来实现类似erlang otp里面的gen_server功能
erlang比go要成熟,其中一大原因就是拥有otp工程,进程的管理可以通过专门的行为 模式去处理,例如gen_server,里面包含的6个回调函数init/1, handle_call/3, han ...
- pandas读取nlp_chinese_corpus里面的json类型的数据,一行一个字典的数据
最近在用pandas来读取json类型的数据,发现网上资料居然没查到,我这里弥补一下空缺,读取的json数据示例为: {"qid": "qid_1815059893214 ...
- 用c语言 简单实现JAVA里面的ArryList 功能,实现内存自动扩展
#include<stdio.h> #include<stdlib.h> struct Arr{ int * pbase;//数组首地址 int len;//数 ...
- 《Quaternion》自己实现Quaternion里面的FromToRotation功能
先看代码. /// <summary>/// Handles smaller values better than Unity's version./// </summary> ...
- 开启Windows8里面的Hyper-V虚拟机功能
首先了解下什么是Hyper-V?也就是虚拟化技术,允许终端用户在同一台机器上运行多个操作系统,支持32位和64位系统,可以直接在Windows 8上创建自己的虚拟机.开启Hyper-V虚拟机需要更多的 ...
- js中json法创建对象(json里面的:相当于js里面的=)
js中json法创建对象(json里面的:相当于js里面的=) 一.总结 json里面的:相当于js里面的= 4.json创建js对象解决命名冲突:多个人为同一个页面写js的话,命名冲突就有可能发生, ...
- 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样...
在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": {"publish-m ...
- Win10 如何隐藏控制面板里面的BitLocker 驱动器加密功能
环境: HP440G4 Win10专业版 问题描述: Win10 如何隐藏控制面板里面的BitLocker 驱动器加密功能 适合Win10和Win11系统,企业管控BitLocker 加密所要用到,隐 ...
最新文章
- [Dijstra] 洛谷 P2939 改造路
- 【跃迁之路】【658天】程序员高效学习方法论探索系列(实验阶段415-2018.12.02)...
- BZOJ 3745: [Coci2015]Norma(分治)
- SPList和SPDocumentLibrary 通过代码更新审批状态
- java父类shape_java父类为抽象类,子类构造方法传参
- 【BZOJ】【4145】【AMPPZ2014】The Prices
- python多大孩子可以学_孩子学编程最佳年龄是多大
- Varnish 安装部署
- 什么软件画er图方便_ER模型怎么画?必备入门级模型图绘制软件
- ClearCase Overview
- 手机号微信检测方法案例分析
- bzoj4568-幸运数字
- 我是如何拿到蚂蚁金服实习 offer 的
- 顺丰全栈资源下的自动化运维灵魂
- 二十一世纪计算|洪小文:帮助机器和人类共同学习
- 中国十大悍匪排行榜,屌爆了!!!!
- 域名、dns、服务器、IP、主机名(写的好)
- PHP + QQ邮箱发送邮箱验证码
- MapReduce打包jar包并运行的步骤操作以及重要的注意事项
- 多点触摸画板(MultiTouchCanvas)
热门文章
- linux执行某个目录的程序
- 外卖(food) 洛谷4040宅男计划 三分套二分贪心
- MySQL给一个字段递增赋值
- XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg
- 秒杀多线程第十篇 生产者消费者问题 (续)
- Intent 传递对象
- 获得MFC窗口其它类指针的方法
- Creating a Jabber Client using the agsXMPP Library
- (四)java B2B2C Springboot仿淘宝电子商城系统技术解决方案
- 常州大学阿里云大数据学院举行“创新思维”课程答辩