SQL Server 2016新特性: 对JSON的支持

2023-05-16

SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型、XML索引及各种管理或输出XML格式的函数。随着JSON的流行,SQL Server2016开始支持JSON数据类型,不仅可以直接输出JSON格式的结果集,还能读取JSON格式的数据。对于有用到JSON格式的应用程式来说,这无疑是一利器,因为不再需要使用JSON.Net这类工具进行分析和处理JSON数据,直接利用SQL Server内置函数就可以处理,轻松将查询结果输出为JSON格式,或者搜索JSON文件内容。下面通过实例的方式,展现SQL Server 2016这一新功能。

 

 

 

下面是我们熟悉的SELECT及输出格式,后面对JSON的演示基于此SQL:

 

 

 

一、  将查询结果输出JSON格式

1 要将SELECT语句的结果以JSON输出,最简单的方法是在后面加上FOR JSON AUTO:

 

2 若要为FOR JSON加上Root Key,可以用ROOT选项来自定义ROOT Key的名称:

 

 

若要自定义输出JSON格式的结构是,必须使用JSONPATH。若SELECT的列中,存在列名名称相同时,必须用别名重命名才能正常查询,否则会报类似下面错误提示:

 

3  JSON PATH输出:

 

 

4  JSONPATH+ROOT输出:

5 为NULL的数据在输出JSON时,会被忽略,若想要让NULL的字段也显示出来,可以加上选项INCLUDE_NULL_VALUES,该选项也适用于AUTO。

 

6 带有层级关系的,可以增加节点,比如下面的SQL,增加了一个“SN”节点,把栏位SERNUM和CLIMAT放在里面:

 

二、  解析JSON格式的数据

1 使用OPENJSON()函数:

 

2 通过WITH选项,自定义输出列:

 

 

 

 

转载来源:https://blog.csdn.net/Burgess_Liu/article/details/51557331

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

SQL Server 2016新特性: 对JSON的支持 的相关文章

  • 如何在golang中解析JSON而不需要解组两次

    我有一个 Web 套接字连接 它在 JSON 对象中发送不同类型的消息 并且我想将内容解组到一些已知的结构中 为此 我认为我应该执行以下操作 步骤 1 将 JSON 解组为通用映射 字符串 接口 步骤 2 找到我要找的钥匙 步骤 3 尝试将
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • 包含 contains 的 json 格式查询

    我在 ansible 中有以下 json 输出 active transaction null cores 4 hostname alpha auth wb01 active transaction null cores 4 hostnam
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何返回 json 结果并将 unicode 字符转义为 \u1234

    我正在实现一个返回 json 结果的方法 例如 public JsonResult MethodName Guid key var result ApiHelper GetData key Data is stored in db as v
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We
  • 从 call_log 中获取最大并发通话数

    我需要帮助在 MySQL 5 0 77 中编写一个查询 根据下面所示的数据 办公室一天的通话量 返回并发电话呼叫的峰值数量 我只是想知道一天中任何特定时间同时打电话的人数最多是多少 首先 这是 MySQL 表 CREATE TABLE ca
  • postgresql 不同的不工作

    我使用以下代码从数据库获取值 但是当我编写这段代码时 测试看看问题出在哪里 我注意到查询没有从数据库中获取不同的值 这是查询 select distinct ca id as id acc name as accName pIsu name
  • 处理与不同相关实体的一对多的正确模式

    我有一个 C 项目 我使用实体框架作为 ORM 我有一个User 可以向多家银行付款 每家银行都是一个独立的实体 并且每家银行都由不同的字段描述 问题是 一User可以没有或有很多不同的Banks 我不太确定如何对此进行建模 临时解决方案是
  • SQL Server 查询中 UNION ALL 与 OR 条件

    我必须根据表上不存在的条件选择一些行 如果我使用如下的 union all 它会在不到 1 秒的时间内执行 SELECT 1 FROM dummyTable WHERE NOT EXISTS SELECT 1 FROM TABLE t WH
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 如何为 Gson 编写自定义 JSON 反序列化器?

    我有一个 Java 类 用户 public class User int id String name Timestamp updateDate 我收到一个包含来自 Web 服务的用户对象的 JSON 列表 id 1 name Jonas
  • 向带有检查约束 SQL 的表添加列

    我想向表中添加一列 然后添加一个检查约束以确保其大于 0 我似乎无法让它在 oracle sl Developer 中运行 Alter TABLE store101 add column Base salary Number 7 2 con
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • 是否可以从子查询中获取多个值?

    有没有办法让子查询在oracle db中返回多列 我知道这个特定的sql会导致错误 但它很好地总结了我想要的 select a x select b y b z from b where b v a v from a 我想要这样的结果 a
  • 针对约 225 万行的单表选择查询的优化技术?

    我有一个在 InnoDB 引擎上运行的 MySQL 表 名为squares大约有 2 250 000 行 表结构如下 squares square id int 7 unsigned NOT NULL ref coord lat doubl
  • 查看Jasper报告执行的SQL

    运行 Jasper 报表 其中 SQL 嵌入到报表文件 jrxml 中 时 是否可以看到执行的 SQL 理想情况下 我还想查看替换每个 P 占位符的值 Cheers Don JasperReports 使用 Jakarta Commons
  • 总和和不同不会改变结果?

    我是一个新手 试图在这里解决这个问题 到目前为止还没有运气 非常感谢任何帮助 Select Distinct AB agency no ab branch no AS AGENCY BRANCH count AB agency no ab
  • Jackson 将单个项目反序列化到列表中

    我正在尝试使用一项服务 该服务为我提供了一个带有数组字段的实体 id 23233 items name item 1 name item 2 但是 当数组包含单个项目时 将返回该项目本身 而不是包含一个元素的数组 id 43567 item

随机推荐

  • rust语言orbtk GUI基础(old2018)-3.1 orbtk基础控件

    orbtk的api在2019 2进行了修改 xff0c 该文章为2018版 新版请转 新版orbtk gui基础 rust orbtk基础widgets orbtk基础控件demoorbtk控件使用方法orbtk控件原理创建控件为控件添加子
  • rust语言Orbtk GUI库-3.orbtk 控件简介

    2019 9 updated orbtk支持的控件还不是很多 xff0c 目前orbtk内置的控件主要有 xff1a 基础控件 TextBlock xff1a 显示文本 xff0c 不可编辑 xff0c 不可交互TextBox xff1a
  • rust语言Orbtk GUI库-3.1 orbtk基础控件

    orbtk基础控件demo orbtk目前内置的基础控件包括 xff1a TextBlockTextBoxButtonToggleButtoncheck boxSwitchFontIconBlockImageWidgetWaterMarkT
  • SQL - 将查询结果插入到另一张表中

    一 INSERT INTO 注意 xff1a 字段必须一致 xff08 位置一致 xff0c 类型一致 xff09 xff0c 否则会出现数据转换错误 1 字段一致 INSERT INTO 目标表 SELECT FROM 来源表 WHERE
  • Ubuntu18.04设置在开机时自动链接蓝牙键盘

    简介 系统升级到Ubuntu18 04时 xff0c 启动后蓝牙键盘不能自动连接 xff0c 需要虚拟键盘登录后手动连接蓝牙键盘后 xff0c 才能正常使用 如何在开机时自动链接键盘 xff1f 查找蓝牙键盘的Address地址 在Sett
  • iOS scrollview touchbegin

    1 开篇 最近在项目中遇到一个 需求就是在一个可以左右拨动的页面上 xff0c 添加一些交互功能 xff0c 比如说点击某个页面会有文字变化 xff0c 图片变换 xff0c 最后有比较特殊的需求是做个像slider功能的可以拖动的按钮 x
  • 大数据毕业设计 - 选题推荐(一)

    文章目录 1 开题指导1 1 起因1 2 如何避坑 重中之重 1 3 为什么这么说呢 xff1f 1 4 难度把控1 5 题目名称1 6 最后 选题建议3 最后 毕设帮助 xff0c 开题指导 xff0c 资料分享 xff0c 疑问解答 见
  • 大数据毕设题目推荐 - 最新大数据毕设选题 - 毕业设计项目方向课题

    文章目录 0 前言1 如何选题1 1 选题技巧 xff1a 如何避坑 重中之重 1 2 为什么这么说呢 xff1f 1 3 难度把控1 4 题目名称1 5 最后 2 大数据 选题推荐2 1 大数据挖掘类2 2 大数据处理 云计算 区块链 毕
  • 解决OAth2.0的授权token放在header中,导致文件下载验证失效的问题

    1 项目背景 项目是采用微服务架构 xff0c 使用spring gateway作为网关 xff0c 统一做校验权限 2 问题 OAth2 0的授权token是放在请求头Authorization中的 xff0c 如果使用浏览器直接下载文件
  • 大数据毕业设计选题推荐(二)

    文章目录 0 前言1 大数据相关题目2 开题指导2 1 起因2 2 如何避坑 重中之重 2 3 为什么这么说呢 xff1f 2 4 难度把控2 5 题目名称 3 最后 0 前言 这是学长亲手整理的 xff0c 大数据毕设选题系列第二篇 xf
  • 【C语言程序设计】日期函数,日期处理函数!

    定义一个表示日期的结构体类型 xff0c 再分别定义函数完成下列功能 xff1a 计算某一天是对应年的第几天 xff0c 这一年一共多少天 xff1b 计算两个日期之间相隔的天数 两个日期由键盘输入 算法思想 设定结构体类型表示日期类型名为
  • 关于ArchLinux系统中某些软件无法输入中文的问题

    1 检查是否安装语言支持 P S 这个是可选操作 xff0c 可跳过 一般安装的时候都会选安装中文 xff0c 如果不确定 xff0c 最好检查一下 首先检查一下语言设置 span class token function sudo spa
  • Windows Python 命令行如何退出

    在使用 Python 命令行工具的时候 xff0c 我们发现通常使用的 Ctrl 43 C 没有办法退出界面 例如 xff0c 下图所示 xff0c 当我们从键盘上输出 Ctrl 43 C 还是没有办法退出 解决方法 可以通过键盘上输入 C
  • Node 的 cross-env 模块

    cross env 是运行跨平台设置的和使用环境变量 xff08 Node中的环境变量 xff09 的脚本 一句话来说明 cross env xff0c 就是针对相同的语句和命令 xff0c 我们希望这条语句能够同时在 Windows 和
  • 如何从 Java 的 List 中删除第一个元素

    概述 在这个实例中 xff0c 我们将会演示如何删除在 Java 中定义的 List 的第 1 个元素 我们将会针对这个问题使用 List 接口的 2 个实现 ArrayList 和 LinkedList 来进行演示 创建一个 List 首
  • 史上最详细----阿里云创建ECS实例教程(每一步图文结合)

    进入阿里云官网 xff0c 登录账号 进入控制台页面 打开侧边导航栏 xff0c 进入云服务器ECS页面 点击创建实例 进入到这个页面 xff08 我这里为了方便演示 xff0c 用的是旧版的页面 xff09 选择付费模式和可用区 选择配置
  • 使用python的opencv和tesseract库来识别图片中指定区域的中文

    使用python的opencv和tesseract库来识别图片中指定区域的中文 需求说明 图片中包含大量中文 xff0c tesseract全图识别是逐行识别的 xff0c 无法得出满意的结果 xff0c 需要识别指定区域的中文 实现方案
  • 7-5 判断回文 栈实现

    回文是指正读反读均相同的字符序列 xff0c 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 试写一个程序判定给定的字符向量是否为回文 xff0c 用栈实现 提示 xff1a 将一半字符入栈 输入格式 输入任意字
  • antd design国际化配置为中文时,日期组件中月与星期显示为英文,其他显示为中文

    antd design国际化具体配置见官网 https ant design components locale provider cn 主要代码 xff1a import LocaleProvider from 39 antd 39 im
  • SQL Server 2016新特性: 对JSON的支持

    SQL Server 2005开始支持XML数据类型 xff0c 提供原生的XML数据类型 XML索引及各种管理或输出XML格式的函数 随着JSON的流行 xff0c SQL Server2016开始支持JSON数据类型 xff0c 不仅可