oracle的json_arrayagg的用法和例子

JSON_ARRAYAGG 是 Oracle 数据库中用于将多行数据聚合为一个 JSON 数组的函数。这个函数对于将查询结果转换为 JSON 格式特别有用,尤其是在 RESTful API 或需要 JSON 输出的应用中。

语法

sql

JSON_ARRAYAGG ( [ DISTINCT | UNIQUE ] expr [ ON NULL { NULL | ABSENT | EMPTY_ARRAY | EMPTY_OBJECT } ]

               [ ORDER BY { order_by_clause | NULL } ]

               [ FORMAT JSON ]

               [ PRETTY ]

               [ RETURNING CLOB | VARCHAR2(size) ]

               [ NULL ON NULL ]

               [ STRICT ]

             )

 

expr:要聚合的表达式,可以是任何可以求值为 JSON 对象的表达式。

ON NULL:指定当 expr 为 NULL 时如何处理。

ORDER BY:指定排序顺序。

FORMAT JSON:指定输入已经是 JSON 格式,不需要额外处理。

PRETTY:美化输出的 JSON 格式(在 12c R2 及更高版本中可用)。

RETURNING:指定返回的数据类型,默认为 VARCHAR2(4000)。

NULL ON NULL:如果所有输入值都是 NULL,则返回 NULL(在 12c R2 及更高版本中可用)。

STRICT:如果任何输入值不是有效的 JSON,则抛出异常(在 12c R2 及更高版本中可用)。

例子

假设我们有一个名为 employees 的表,包含员工的 id 和 name:

sql

CREATE TABLE employees (

    id NUMBER PRIMARY KEY,

    name VARCHAR2(100)

);

 

INSERT INTO employees VALUES (1, 'Alice');

INSERT INTO employees VALUES (2, 'Bob');

INSERT INTO employees VALUES (3, 'Charlie');

 

 

我们可以使用 JSON_ARRAYAGG 来获取所有员工的名字并作为一个 JSON 数组返回:

 

sql

SELECT JSON_ARRAYAGG(name) AS employee_names

FROM employees;

 

这将返回:

 

json

["Alice", "Bob", "Charlie"]

 

如果我们想要按名字排序并返回更长的数据类型(例如 CLOB),可以这样做:

 

sql

SELECT JSON_ARRAYAGG(name ORDER BY name) AS employee_names

FROM employees

RETURNING CLOB;

 

 

如果某个员工的名字为 NULL,并且我们想要在 JSON 数组中省略这些 NULL 值,可以使用 ON NULL ABSENT:

sql

-- 假设我们有一个名字为 NULL 的员工

INSERT INTO employees VALUES (4, NULL);

 

SELECT JSON_ARRAYAGG(name ON NULL ABSENT) AS employee_names

FROM employees;

 

这将返回:

json

["Alice", "Bob", "Charlie"]

注意:NULL 值已被省略。

 

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

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

相关文章

【CT】LeetCode手撕—121. 买卖股票的最佳时机

目录 题目1- 思路2- 实现⭐121. 买卖股票的最佳时机——题解思路 2- ACM实现 题目 原题连接:121. 买卖股票的最佳时机 1- 思路 模式识别 模式1:只能某一天买入 ——> 买卖一次 ——> dp 一次的最大利润 动规五部曲 1.定义dp数组,确…

数据结构之线性表(2)

顺序表中的动态存储 上文我们了解到了顺序表中的静态顺序表的相关操作,今天我们来学习动态顺序表的知识。 为什么会存在动态顺序表呢?? 原因:静态顺序表给定的数据容量固定,多了浪费,少了不够用。 首先我…

python,自定义token生成

1、使用的包PyJWT来实现token生成 安装:pip install PyJWT2.8.0 2、使用例子: import jwt import time pip install pyJWT2.8.0 SECRET_KEY %^ES*E&Ryurehuie9*7^%$#$EDFGHUYTRE#$%^&%$##$RTYGHIK DEFAULT_EXP 7 * 24 * 60def create_token(…

蓝桥杯十五届国赛模拟题1答案

1、bug缺陷报告 功能名称缺陷描述操作步骤预期结果实际结果缺陷级别销售订单列表

【Python深度学习】——信息量|熵

【Python深度学习】——信息量|熵 假设1. 信息量1.1 含义1.2 信息量的公式: 2. 熵Entropy2. 含义2.2 熵的计算公式:2.3 熵的作用 假设 例子:掷硬币 假设我们有一个公平的硬币。这个硬币有两个面:正面(H)和反面(T&…

三生随记——茶叶的诅咒

在遥远的深山中,有一个被浓雾常年笼罩的古村落。这里的人们生活简朴,与外界几乎隔绝,他们唯一的财富,便是那满山遍野的奇特茶叶。这种茶叶的叶片深绿如玉,散发着诱人的香气,被称为“幽雾灵茶”。 然而&…

一. 做一个前后端分离的电商项目(技术栈 : springboot+mybatis-plus+vue) 的前期准备

前期准备 ---- 项目创建和配置 一.创建springboot项目二.项目前期准备工作1. 修改springboot和jdk版本号2.Web请求处理(1) 添加web依赖(2) 测试是否能够成功访问(3) 修改端口号(4) 创建数据库 3. 连接数据库(1) 添加依赖(2)配置application.properties文件(3)添加包扫描 Mapper…

Validation校验

文章目录 Validation校验作用依赖坐标UserController接收客户端注册用户请求的方法请求参数封装实体User的结构校验分组 Validation校验 作用 服务端接收前端传递的请求从参数的时候,可以对请求参数进行自动校验。 场景:通过postman向服务端发送一个注…

《检索技术核心20讲》进阶篇之LSM树

背景 学习极客实践课程《检索技术核心20讲》https://time.geekbang.org/column/article/215243,文档形式记录笔记。 内容 磁盘和内存数据读取特点 工业界中数据量往往很庞大,比如数据无法全部加载进内存,无法支持索引的高效实时更新&…

视频格式转换avi格式怎么弄?分享视频转换方法

视频格式转换avi格式怎么弄?AVI作为一种广泛支持的视频格式,能够在多种设备和播放器上顺畅播放,确保我们的视频内容能够无障碍地分享给朋友或上传至各大平台。其次,AVI格式通常具有较好的兼容性,能够避免格式转换过程中…

修改yarn、npm、pnpm为国内镜像源

国内由于网络的原因,使用官方的npm、yarn、pnpm访问下载依赖库会很慢,有时候还会出现无法访问的情况,这时候就需要我们给npm、yarn、pnpm换一个国内的镜像源的,一般的我们可以将镜像换成淘宝的源,由于平时比较常用到的…

超级数据查看器 教程pdf 1-31集 百度网盘

百度网盘链接 提取码1234 通过百度网盘分享的文件:超级数据查看器 … 链接:https://pan.baidu.com/s/1s_2lbwZ2_Su83vDElv76ag?pwd1234 提取码:1234 复制这段内容打开「百度网盘APP 即可获取」

基于深度学习的物体材质预测

基于深度学习的物体材质预测 物体材质预测是计算机视觉中的一个重要任务,旨在通过分析图像或视频来识别和分类物体的材质类型(如金属、木材、塑料、布料等)。基于深度学习的方法在材质预测中取得了显著进展,能够高效地提取图像特…

[AI words] 突破瓶颈:如何将AI words网站构建时间缩短一半

在一个阳光明媚的早晨,我坐在电脑前,满怀期待地按下了“构建”按钮,准备生成我的新网站 AI words。这个网站的目标是为每个单词生成一个单独的页面,总共有5000个单词。可是,构建过程竟然需要整整14分钟!我心…

用飞书写博客,并自动部署

feishu-vitepress 用飞书写博客,并自动部署 目前的静态博客如vitepress,主要是用markdown来写内容。markdown虽然可读性比较好,但是在文章中贴图片有点麻烦,需要先保存图片到asset目录下,再在markdown中写图片地址。 平时工作主要…

优化查询性能:DolphinDB 时间类型数据比较规则详解

在数据库中,时间是一种常见的数据类型。在处理时间数据时,比较操作是非常常见的需求。然而,在不同的场景下,对时间类型数据进行比较时应用的规则不同。本文将从 DolphinDB 支持的时间类型开始,由浅入深分别介绍时间类型…

47.PyCharm P版突然无法启动

目录 1.启动cmd.exe,进到pycharm\bin目录,启动.\pycharm.bat,如果正常,就像下面这个样子,如果不正常,则会报错, 2.用记事本打开pycharm.bat文件,加上以下代码后 今晨,无…

《C++ Primer》导学系列:第 3 章 - 字符串、向量和数组

3.1 命名空间的使用 概述 命名空间是C中的一种机制,用于组织代码并避免名字冲突。通过使用命名空间,可以将全局作用域中的标识符组织到逻辑分组中,从而提高代码的可读性和可维护性。命名空间在大型项目中尤为重要,因为它们可以防…

关于C#导出Word时报错“{00020970-0000-0000-C000-000000000046}加载类型库/DLL 时出错”的解决办法

之前还运行正常的程序,突然发现导出Word的时候会报错,报错内容: System.InvalidCastException:“Unable to cast COM object of type ‘Microsoft.Office.Interop.Word.ApplicationClass’ to interface type ‘Microsoft.Office.Interop.Wor…

ubuntu18.04 配置 mid360并测试fast_lio

1.在买到Mid360之后,我们可以看到mid360延伸出来了三组线。 第一组线是电源线,包含了红色线正极,和黑色线负极。一般可以用来接9-27v的电源,推荐接12v的电源转换器,或者接14.4v的电源转换器。 第二组线是信号线&#x…