SQLServer2022新特性JSON_ARRAY从零个或更多表达式中构造 JSON 数组文本

SQLServer2022新特性JSON_ARRAY从零个或更多表达式中构造 JSON 数组文本

参考官方文档
https://learn.microsoft.com/en-us/sql/t-sql/functions/json-array-transact-sql?view=sql-server-ver16

1、本文内容

  • 语法
  • 参数
  • 返回值
  • 示例

适用于:

  • SQL Server 2022 (16.x)
  • Azure SQL 数据库
  • Azure SQL 托管实例

从零个或更多表达式中构造 JSON 数组文本。

2、语法

JSON_ARRAY ( [ <json_array_value> [,...n] ] [ <json_null_clause> ]  )  <json_array_value> ::= value_expression<json_null_clause> ::=NULL ON NULL| ABSENT ON NULL

3、参数

json_array_value
是定义 JSON 数组中元素值的表达式。

json_null_clause
可用于控制 JSON_OBJECT 函数在 value_expression 为 NULL 时的行为。 在生成 JSON 数组中的元素值时,选项 NULL ON NULL 将 SQL NULL 值转换为 JSON null 值。 如果值为 NULL,选项 ABSENT ON NULL 将省略 JSON 数组中的元素。 此选项的默认设置为 ABSENT ON NULL。

4、返回值

返回 nvarchar(max) 类型的有效 JSON 数组字符串。

5、示例

5.1、返回空 JSON 数组

以下示例返回空 JSON 数组。

SELECT JSON_ARRAY() AS return_json;return_json
--------------------------------------------------------------
{}(1 行受影响)

5.2、返回具有四个元素的 JSON 数组

以下示例返回具有四个元素的 JSON 数组。

SELECT JSON_ARRAY(N'First line',N'第一行', N'Second line',2) AS return_json;return_json
------------------------------------------------------------------
["First line","第一行","Second line",2](1 行受影响)

5.3、返回三个元素的 JSON 数组

以下示例返回具有三个元素的 JSON 数组,因为其中一个输入值为 NULL。 由于省略 json_null_clause 且该选项的默认值为 ABSENT ON NULL,所以其中一个输入的 NULL 值不会被转换为 JSON 空值。

-- 默认值为 ABSENT ON NULL ,所以以下两条SQL执行效果一样
SELECT JSON_ARRAY('First', 1, NULL, 2) AS return_json;
-- OR 
SELECT JSON_ARRAY('First', 1, NULL, 2 ABSENT ON NULL) AS return_json;-- result
return_json
--------------------------------------------------------------------
["First",1,2](1 行受影响)

5.4、返回四个元素的 JSON 数组

返回具有四个元素的 JSON 数组, 指定 NULL ON NULL 选项是为了让输入中的任意 SQL NULL 值在 JSON 数组中转换为 JSON 空值。

SELECT JSON_ARRAY('First', 1, NULL, 2 NULL ON NULL) AS return_json;return_json
--------------------------------------------------------------------
["First",1,null,2](1 行受影响)

5.5、返回包含JSON字符串和JSON 对象的两个元素的JSON数组

以下示例返回具有两个元素的 JSON 数组。 一个元素包含 JSON 字符串,另一个元素包含 JSON 对象。

SELECT JSON_ARRAY('1001',JSON_OBJECT('name':'SQLNode1','age':28)) AS return_json;return_json
-------------------------------------------------------------------------------
["1001",{"name":"SQLNode1","age":28}](1 行受影响)

5.6、返回具有三个元素的 JSON 数组包含JSON字符串,对象及数组

以下示例返回具有三个元素的 JSON 数组。 一个元素包含 JSON 字符串,另一个元素包含 JSON 对象,而另一个元素包含 JSON 数组。

--以下示例返回具有三个元素的 JSON 数组。 
-- 一个元素包含 JSON 字符串,
-- 另一个元素包含 JSON 对象,
-- 而另一个元素包含 JSON 数组。
SELECT JSON_ARRAY('1002',JSON_OBJECT('name':'SQLNode2','age':29), JSON_ARRAY('One', 1, NULL, 2 NULL ON NULL)) AS return_json;return_json
--------------------------------------------------------------------------------------
["1002",{"name":"SQLNode2","age":29},["One",1,null,2]](1 行受影响)

5.7、输入指定为变量或SQL表达式返回JSON 数组

以下示例返回 JSON 数组,其输入指定为变量或 SQL 表达式。

DECLARE @id_value NVARCHAR(64) = NEWID();
SELECT JSON_ARRAY(1, @id_value, (SELECT @@SPID),(SELECT GETDATE())) AS return_json;return_json
--------------------------------------------------------------------------------
[1,"BA5E3B36-E12E-4F4E-84D7-584EEB3C43CE",68,"2024-05-29T10:52:51.860"](1 行受影响)

5.8、返回查询中每行的 JSON 数组

以下示例返回查询中每行的 JSON 数组。

CREATE TABLE Persons (  ID INT PRIMARY KEY,  Name NVARCHAR(50),  Age INT  
);  INSERT INTO Persons VALUES (1, 'John Doe', 30);  
INSERT INTO Persons VALUES (2, 'Jane Smith', 25);  SELECT ID,Name,Age FROM Persons;SELECT   ID,  JSON_ARRAY(Name,Age) AS PersonJson  
FROM Persons;ID          PersonJson
----------- ---------------------------------------------------------------
1           ["John Doe",30]
2           ["Jane Smith",25](2 行受影响)

6、相关内容

  • SQL Server 中的 JSON 数据

参考官方文档
https://learn.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver16

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一款更加轻量级的虚拟机:Multipass

一款更加轻量级的虚拟机&#xff1a;Multipass 前言Multipass概述安装Multipassmultipass命令命令使用说明 Multipass的使用查看镜像列表新建和运行虚拟机查看虚拟机列表查看虚拟机信息进入虚拟机外部操作虚拟机删除和释放实例初始化配置虚拟机的调整设置桥接网络接口配置软件源…

Double 4 VR虚拟情景实训教学系统在商务外语课堂上的应用

Double 4 VR虚拟情景实训教学系统在商务外语课堂上的应用具有许多优势。通过VR技术&#xff0c;商务外语课堂可以为学生提供一个真实、生动的学习环境&#xff0c;使他们能够更直观地理解和掌握商务知识&#xff0c;提高他们的外语交流和沟通能力。 首先&#xff0c;VR技术可以…

Oracle dblink 发现Network 等待事件的分析 enq: KO - fast object checkpoint

所有的sql 通过dblink 查询全部等待中&#xff0c; 同一个SQL 20多个session 在跑&#xff0c;等待事件network&#xff0c;可能怀疑是不是网络断开了&#xff0c;导致没有返回 执行sql 如下&#xff1a; BEGIN Xdblink ; END; 去到dblink 所在的db&#xff0c;发现20多个sql在…

白酒:白酒产地的地域文化与品牌形象

云仓酒庄豪迈白酒&#xff0c;作为中国白酒的一部分&#xff0c;其品牌形象深受产地的地域文化影响。地域文化是一个地区与众不同的文化传统和价值观&#xff0c;它影响着当地人的生活方式和审美观念&#xff0c;进而影响白酒的品牌形象。 首先&#xff0c;白酒产地的历史与传统…

windows句柄

引用&#xff1a;windows程序员面试指南 句柄 句柄是Windows系统中对象或实例的标识&#xff0c;这些对象包括模块、应用程序实例、窗口、控件、位图、GDI对象、资源、文件等。 数值上&#xff1a;是一个32位无符号整型值&#xff08;32位系统下&#xff09;&#xff1b; 逻辑…

Spark基础:Scala内建控制结构

在Scala中&#xff0c;控制结构是编程的基础&#xff0c;它们允许你根据条件执行不同的代码块&#xff0c;或者重复执行某些代码块。Scala提供了多种内建的控制结构&#xff0c;这些结构在Apache Spark的编程中同样非常有用。以下是一些Scala中常用的内建控制结构&#xff1a; …

ClickHouse安装教程:开启你的列式数据库之旅

ClickHouse是一个高性能的列式数据库管理系统&#xff0c;适用于在线分析处理&#xff08;OLAP&#xff09;。以下是ClickHouse的一些基本使用步骤&#xff1a; 下载二进制文件&#xff1a;您可以通过运行以下curl命令在Linux、FreeBSD或macOS上本地下载ClickHouse&#xff1a…

【算法】常用数据结构的优缺点

当然&#xff0c;下面是几种常用数据结构及其优缺点的详细描述&#xff0c;包括数组、链表、栈、队列、哈希表、树和图&#xff1a; 1. 数组 (Array) 优点&#xff1a; 快速访问&#xff1a; 通过索引可以在常数时间内(O(1))访问任意元素。空间局部性好&#xff1a; 数据在内…

Midjourney如何控制光照?提示词灵感来了!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Midjourney如何控制光照&#xff1f;提示词灵感来了&#xff01;文章目录 前言总结 前言 Midjourney v6 已经更新好久了&#xff0c;你知道有哪些可以控制光照效果的关键词吗…

全志T527 适配双目tp2815_mipi

一、硬件信息 TP2815&#xff1a; 确认硬件信息&#xff1a; 1、通信接口&#xff1a;TWI2总线&#xff0c;引脚组为PE1 、PE2 2、RESET脚&#xff1a; 二、软件配置 1、设备树 t527 dtsi: bsp/configs/linux-5.15/sun55iw3p1.dtsi t527 uboot-board.dts device/config/chi…

重学java 49 增强for

知之俞明&#xff0c;则行之越笃&#xff1b;行之愈笃&#xff0c;则知之愈益&#xff1b; —— 24.5.28 一、基本使用 1.作用: 遍历集合或者数组 2.格式: for(元素类型 变量名:要遍历的集合名或者数组名) 变量名就是代表的每一个元素 3.快捷键: 集合名或者数组名.for package …

ESXI8.0虚拟机和主机之间进行粘贴复制

1&#xff1a;默认情况下新建一个虚拟机是无法和主机之间进行粘贴复制操作的&#xff0c;主要是为了安全。 2&#xff1a;可以参考下面的文档进行操作&#xff0c;操作成功也只能复制粘贴数据&#xff0c;而无法复制粘贴文件或文件夹 https://knowledge.broadcom.com/externa…

组建RAID后安装系统时发现无法识别硬盘!

计算环境中,RAID(独立磁盘冗余阵列)是一种广泛采用的数据存储技术,它通过组合多个物理硬盘来提升数据读写速度、增加存储容量或提供数据冗余以确保数据安全。然而,用户在使用SAS或SATA RAID阵列卡组建RAID后,可能会遇到在安装操作系统过程中硬盘无法被系统识别的问题。接…

【会议征稿,IEEE出版】第九届信息科学、计算机技术与交通运输国际学术会议(ISCTT 2024,6月28-30)

第九届信息科学、计算机技术与交通运输国际学术会议&#xff08;ISCTT 2024&#xff09;将于2024年6月28-30日在中国绵阳举行。 ISCTT 2024将围绕 “信息科学”、"计算机技术”、“交通运输” 等最新研究领域&#xff0c;为来自国内外高等院校、科学研究所、企事业单位的专…

安卓 view淡入淡出(fade in fade out) kotlin

文章目录 前言一、布局文件二、kotlin扩展方法1.fadeOutAnimation 淡出动画2.fadeInAnimation 淡入动画 三、使用总结 前言 好久没写文章了,简单码一个淡入淡出,我们先上效果图 那么接下来上代码 一、布局文件 我这边直接将activity_main.xml改为下列代码,可以看到其中包含一…

【Daily Code】leetcode2951. 找出峰值

Problem: 2951. 找出峰值 Code class Solution { public:vector<int> findPeaks(vector<int>& mountain) {int n mountain.size();vector<int> res;for(int i 1; i < n - 1; i ) {if(mountain[i] > mountain[i - 1] && mountain[i] >…

【并发程序设计】11.进程间通信

11.进程间通信 &#xff08;IPC&#xff0c;InterProcess Communication&#xff09;进程和进程之间交换信息。 常用通信方式 无名管道&#xff08;pipe&#xff09;有名管道 &#xff08;fifo&#xff09;信号&#xff08;signal&#xff09;共享内存(mmap)套接字&#xff0…

jenkins+sonarqube部署与配置过程

1、部署jenkins&#xff08;本文不做说明&#xff09; 2、部署sonarqube(docker-compose) version: "2.1"services:sonarqube:image: sonarqube:9.9.4-communitycontainer_name: sonarqubedepends_on:- dbports:- 9000:9000networks:- sonarnetenvironment:SONARQU…

大模型-大模型评测

1、参考文章&#xff1a;https://www.linkresearcher.com/information/f4a3b0e0-9d14-45cc-9f8a-acac0ce6addd 2、总结&#xff1a; 语义评测&#xff1a;评测大模型是否能正确理解语言的含义代码评测&#xff1a;评测大模型是否能给出能够执行出正确结果的代码对齐评测&#…

C++候捷stl-视频笔记1

认识headers、版本、重要资源 STL的核心思想是泛型编程 新式头文件内的组件封装在命名空间std中&#xff1a; using namespace std; using std::cout;或std::vector vec; 旧式头文件内的组件不封装在命名空间std中 注:不建直接使用using namespace xxx&#xff0c;如果使用的…