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

2023-05-16

前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却只能通过字符串去转换解析。这个后面我再实验一下

 

转载于:https://www.cnblogs.com/Gin-23333/p/5395769.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试一下sql server2016里面的json功能 的相关文章

  • 转载 matlab矩阵数组常用操作

    一 length 返回矩阵最长维的的长度 ndims 返回维数 numel 返回矩阵元素个数 size 返回每一维的长度 xff0c rows cols 61 size A 矩阵块操作 1 repmat 数组块状复制 2 blkdiag 对
  • 微微一笑很倾城(2)

    微微一笑很倾城 正文 第30章 组队前 xff0c 雷神妮妮想死 组队后 xff0c 看到队伍里那一排ID xff0c 雷神妮妮瞬间回光返照HP全满了 就像老话说的那样 xff0c 一个妮妮被雷劈了 xff0c 千万个妮妮在电闪雷鸣中站起来
  • Get the Job You Want(大学英语综合教程4课文)

    UNIT3 1 Harvey Mackay who runs his own company often interviews applicants for jobs Here he lets us into the secret of w
  • Debian9.5 VNC Server远程桌面配置

    VNC概述 VNC Virtual Network Console 是虚拟网络控制台的缩写 VNC 是一款优秀的远程控制工具软件 xff0c 由著名的 AT amp T 的欧洲研究实验室开发的 VNC 是在基于 UNIX 和 Linux操作
  • 嵌入式常用的英文缩写词汇

    原文地址 xff1a https wenku baidu com view 9d4051f4700abb68a982fb4e html 嵌入式常见英文缩写和英文词汇 搜集中 英文缩写 ARM xff1a Advanced RISC Mach
  • 先安装VS2017再安装VS2015遇到的CMake问题

    先安装了VS2017 xff0c 后来有需求安装VS2015 xff0c 安装VS2015的时候遇到下图问题 xff0c 但是控制面板里面看不到Microsoft Visual C 43 43 2015 Redistributable的项目
  • 粒子群算法优化BP生物能神经网络

    定义 xff1a 粒子群中每个粒子的位置表示BP神经网络当前迭代中权值的集合 xff0c 每个粒子的维数由网络中起连接作用的权值的数量和阈值个数决定 xff0c 以给定训练样本集的神经网络输出误差作为神经网络训练问题的适应度函数 xff0c
  • 实现分布式锁技术:Redisson

    1 需求 Spring分布式项目涉及到定时任务 xff0c 目前解决方案 xff1a xff08 1 xff09 集成quartz xff1b xff08 2 xff09 集成redisson xff0c 由于集成quartz需要涉及到数据
  • nginx支持websocket及websocket部分原理介绍

    nginx支持websocket及websocket部分原理介绍 最近ipc通过websocket与server进行通行 xff0c 经过无法通过nginx进行反向代理 xff0c 只有直连nodejs端口 而且部署到阿里云用了slb之后同
  • Windows下分布式环境搭建以及简单测试

    环境配置 xff1a 解压文件 xff1a Nginx服务器和Tomcat服务器 Tomcat服务器配置 xff1a xff08 conf server xml xff09 Nginx配置 xff1a xff08 conf nginx co
  • Go——Inject库

    1 依赖注入和控制反转 在介绍inject之前先简单介绍 依赖注入 和 控制反转 的概念 正常情况下 xff0c 对函数或方法的调用是调用方的主动直接行为 xff0c 调用方清楚地知道被调的函数名是什么 xff0c 参数有哪些类型 xff0
  • 浅谈SpringBoot核心注解原理

    SpringBoot核心注解原理 今天跟大家来探讨下SpringBoot的核心注解 64 SpringBootApplication以及run方法 xff0c 理解下springBoot为什么不需要XML xff0c 达到零配置 首先我们先
  • Quartus II和Modelsim的联合仿真(详细)

    这篇文章不需要在modelsim中建库 映射 建工程等一些繁琐的步骤 xff0c 直接使用modelsim中的默认work库 使用quartus 43 modelsim联合仿真 首先推荐一篇文章 http www cnblogs com e
  • requests.post处理Content-Type: multipart/form-data的请求

    前几天遇到一个需求 xff0c 要调用一个接口发送请求 xff0c 抓包之后得到的数据是这样的 上网看了一些资料得知 xff0c 原来这个接口的数据是通过multipart form data格式传过去的 xff0c multipart f
  • 上一步,下一步(撤销和恢复)

    var data 61 data count 61 0 data list 61 function regain function handleSaveCss 获取workspace body里面的内容 var c 61 34 worksp
  • Ubuntu下dpkg安装软件遇到包依赖问题的处理方法

    造冰箱的大熊猫 64 cnblogs 2019 9 10 向灵魂工程师致敬 xff01 在Ubuntu环境下通过dpkg命令安装deb包时 xff0c 如果遇到包依赖问题 xff0c 如 sudo dpkg i xxx deb Readin
  • Ubuntu18优化桌面版的运行速度

    一 刚开始使用Ubuntu18后 xff0c 感觉开机和运行速度都不理想 xff0c 通过改变一些配置可以提高下用户体验感 二 改变一些配置 a 使用Preload预加载 sudo apt install preload y b 禁用不必要
  • Debian安装mplayer,解决没有声音及声卡独占问题

    通过软件中心可以安装Gnome mplayer 本来以为这样这个播放器已经是 万能 的了 xff0c 但是最近下载了几个 mkv的电影 却发现Gnome mplayer没有办法打开 感觉很失望 在网上找了一番后 说只要下载源代码自己安装就行
  • CentOS7中安装MySQL5.7

    安装必要的组件 yum install y autoconf automake imake libxml2 devel expat devel cmake gcc gcc c 43 43 libaio libaio devel bzr bi
  • 20190708新的开始

    题目描述 发展采矿业当然首先得有矿井 xff0c 小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井 xff0c 但他似乎忘记考虑的矿井供电问题 为了保证电力的供应 xff0c 小 FF 想到了两种办法 xff1a 在这一

随机推荐

  • Debian安装JDK

    sudo tar zxvf jdk 8u60 linux x64 tar gz C usr local vi bashrc export JAVA HOME 61 usr local jdk1 8 0 60 export JRE HOME
  • Go——多值赋值和短变量声明

    1 多值赋值 可以一次性声明多个变量 xff0c 并可以在声明时赋值 xff0c 而且可以省略类型 xff0c 但必须遵守一定的规则要求 xff0c 具体看下面的示例 如下都是合法的 span class token comment 相同类
  • 「一本通 1.2 练习 2」扩散(loj10015)

    题目描述 一个点每过一个单位时间就会向 4 个方向扩散一个距离 xff0c 如图所示 xff1a 两个点 a b 连通 xff0c 记作 e a b xff0c 当且仅当 a b 的扩散区域有公共部分 连通块的定义是块内的任意两个点 u v
  • .db文件打开方式

    有时在工作中 xff0c 数据库格式db后缀的格式 xff0c 直接是打不开的 xff0c 所以我这里使用了数据库管理工具 xff0c 步骤如下 1 在电脑安装 Navicat Premium xff0c 安装后在桌面生成图标 xff0c
  • MathType的配置问题;将word中的公式转换为mathtype格式失败,缺少OMML2MML.XSL

    安装MathType后打开word报错 打开会出现以下问题 xff1a 首先 xff0c 把startup添加到word的信任中心 xff1a 要确保路径被office信任 依次打开word gt 文件 gt 选项 gt 信任中心 gt 信
  • XMPP系列(四)---发送和接收文字消息,获取历史消息功能

    今天开始做到最主要的功能发送和接收消息 获取本地历史数据 先上到目前为止的效果图 xff1a 首先是要在XMPPFramework h中引入数据存储模块 xff1a 聊天记录模块的导入 import 34 XMPPMessageArchiv
  • linux新增磁盘后,用fdisk等命令查询不到

    ls sys class scsi host xff08 会看到有host0 host1 hostN xff0c 对每个host进行如下操作 xff09 echo 34 34 gt sys class scsi host host0 sca
  • ubuntu上源码编译安装mysql5.7.27

    一 查看操作系统环境和目录结构 xff0c 并创建mysql用户和组 xff0c 以及规划安装mysql所需要的目录 cat etc issue 查看发行版本信息 xff1a cat proc version 查看正在运行的内核版本信息 u
  • (转-收集)MSSQL手工注入语句集合

    and exists select from sysobjects 判断是否是MSSQL and exists select from tableName 判断某表是否存在 tableName为表名 and 1 61 select 64 6
  • 滚动视图 UIScrollView

    UIScrollView xff1a 提供可以显 示 大于应 用窗 口的内容功能的控件 用户可以通过 手势使内容滚动和缩放 从 而查 看全部内容 初始化一个UIScrollView的对象 1 UIScrollView scroll 61 U
  • 基于steam的游戏销量预测 — PART 1 — 爬取steam游戏相关数据的爬虫

    语言 xff1a python 环境 xff1a ubuntu 爬取内容 xff1a steam游戏标签 xff0c 评论 xff0c 以及在 steamspy 爬取对应游戏的销量 使用相关 xff1a urllib xff0c lxml
  • WechatHelper

    using System using System Collections Generic using System Configuration using System IO using System Linq using System
  • Go——range复用临时变量

    range复用临时变量 span class token keyword package span main span class token keyword import span span class token string 34 s
  • cf 1169 C Increasing by Modulo

    cf 1169 C Increasing by Modulo 题意 给你一个n个数字的序列 xff0c 有一个操作是选其中的一些数字来 43 1 xff0c 最后使得序列每一个数取模m后是一个非严格单调递增的序列 xff0c 问至少需要多少
  • 洛谷P1605 迷宫 题解

    洛谷P1605 迷宫 题解 题目背景 问题描述 数据规模 输入 输出 输入输出样例 输入样例 1 xff1a 输出样例 1 xff1a 题解 C 43 43 代码 题目背景 问题描述 给定一个N M方格的迷宫 xff0c 迷宫里有T处障碍
  • linux禁用nouveau grub,NVIDIA驱动安装之禁用nouveau

    最近实验室的服务器英伟达驱动重启之后就不能用了 xff0c 查明原因原来是因为Ubuntu自动升级了内核 xff0c 导致原本的驱动失效了 xff0c 所以一定不要没事干去升级内核 xff0c 下面介绍一下重装驱动的曲折之旅 0x00更改b
  • Python:使用Kivy将python程序打包为apk文件

    1 概述 Kivy是一套Python下的跨平台开源应用开发框架 xff0c 官网 xff0c 我们可以用 它来将Python程序打包为安卓的apk安装文件 以下是在windows环境中使用 安装和配置的过程中会下载很多东西 xff0c 确保
  • Ubuntu16.04进入挂起或休眠状态时按任何键都无法唤醒问题解决办法

    挂起 xff08 待机 xff09 计算机将目前的运行状态等数据存放在内存 xff0c 关闭硬盘 外设等设备 xff0c 进入等待状态 此时内存仍然需要电力维持其数据 xff0c 但整机耗电很少 恢复时计算机从内存读 出数据 xff0c 回
  • java 兔子繁殖问题_兔子繁殖问题

    兔子繁殖问题 设有一对新生的兔子 xff0c 从第三个月开始他们每个月都生一对兔子 xff0c 新生的兔子从第三个月开始又每个月生一对兔子 按此规律 xff0c 并假定兔子没有死亡 xff0c 20个月后共有多少个兔子 xff1f 要求编写
  • 尝试一下sql server2016里面的json功能

    前2天下载了一个2016的rc版本来玩一下 xff0c 首先感觉是 开发者版本免费啦 xff01 xff01 撒花 xff01 xff01 xff01 另外一个东西 sql server 2016能支持json 的解析和应用啦 xff0c