Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本文讲述Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能。1、初始化本文中的示例使用 SCOTT模式中的 DEPT表,如下:-- DROP TABLE DEPT P
千家信息网最后更新 2025年11月08日Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能
本文讲述Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能。
1、初始化
本文中的示例使用 SCOTT模式中的 DEPT表,如下:
-- DROP TABLE DEPT PURGE;CREATE TABLE DEPT ( DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY, DNAME VARCHAR2(14), LOC VARCHAR2(13));INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');COMMIT;
2、通配符
通配符"*"可用作 JSON_OBJECT 函数的输入,以在单个步骤中引用所有列。使用列名作为键,将每列转换为键:key:value。
SELECT JSON_OBJECT(*) AS json_dataFROM dept;JSON_DATA-------------------------------------------------------{"DEPTNO":10,"DNAME":"ACCOUNTING","LOC":"NEW YORK"}{"DEPTNO":20,"DNAME":"RESEARCH","LOC":"DALLAS"}{"DEPTNO":30,"DNAME":"SALES","LOC":"CHICAGO"}{"DEPTNO":40,"DNAME":"OPERATIONS","LOC":"BOSTON"}SQL>通配符也可以是表或视图别名的前缀。
SELECT JSON_OBJECT(a.*) AS json_dataFROM dept a;JSON_DATA-------------------------------------------------------{"DEPTNO":10,"DNAME":"ACCOUNTING","LOC":"NEW YORK"}{"DEPTNO":20,"DNAME":"RESEARCH","LOC":"DALLAS"}{"DEPTNO":30,"DNAME":"SALES","LOC":"CHICAGO"}{"DEPTNO":40,"DNAME":"OPERATIONS","LOC":"BOSTON"}SQL>3、列列表
可以将逗号分隔的列列表指定为 JSON_OBJECT 函数的输入。在查询中使用的情况下,键名与列表中的列名匹配。以下查询使用小写的列名称,因此输出的键字是小写的。
SELECT JSON_OBJECT(deptno, dname) AS json_dataFROM dept;JSON_DATA-------------------------------------------------------{"deptno":10,"dname":"ACCOUNTING"}{"deptno":20,"dname":"RESEARCH"}{"deptno":30,"dname":"SALES"}{"deptno":40,"dname":"OPERATIONS"}SQL>在以下示例中,列名称是首字段大写,因此键名称在输出中也是首字母大写。
SELECT JSON_OBJECT(Deptno, Dname) AS json_dataFROM dept;JSON_DATA-------------------------------------------------------{"Deptno":10,"Dname":"ACCOUNTING"}{"Deptno":20,"Dname":"RESEARCH"}{"Deptno":30,"Dname":"SALES"}{"Deptno":40,"Dname":"OPERATIONS"}SQL>4、键值(Key-Value)定义
在以前的版本中,键值对以两种方式之一定义,使用KEY和VALUE关键字,或省略KEY关键字,以下所示:
SELECT JSON_OBJECT(KEY 'deptno' VALUE deptno, KEY 'dname' VALUE dname) AS json_dataFROM dept;SELECT JSON_OBJECT('deptno' VALUE deptno, 'dname' VALUE dname) AS json_data在Oracle 19c中,有一个更短的选项,用":"代替VALUE关键字。
SELECT JSON_OBJECT('deptno' : deptno, 'dname' : dname) AS json_dataFROM dept;JSON_DATA-------------------------------------------------------{"deptno":10,"dname":"ACCOUNTING"}{"deptno":20,"dname":"RESEARCH"}{"deptno":30,"dname":"SALES"}{"deptno":40,"dname":"OPERATIONS"}SQL>5、列别名
您不能在 JSON_OBJECT 函数调用本身中对列进行别名,也不需要这样做,但可以在 WITH 子 句或内联视图中进行别名。
WITH converted_data AS ( SELECT deptno AS "deptnoCol", dname AS "dnameCol" FROM dept)SELECT JSON_OBJECT(a.*) AS json_dataFROM converted_data a;JSON_DATA-------------------------------------------------------{"deptnoCol":10,"dnameCol":"ACCOUNTING"}{"deptnoCol":20,"dnameCol":"RESEARCH"}{"deptnoCol":30,"dnameCol":"SALES"}{"deptnoCol":40,"dnameCol":"OPERATIONS"}SQL>SELECT JSON_OBJECT(a.*) AS json_dataFROM (SELECT deptno AS "deptnoCol", dname AS "dnameCol" FROM dept) a;JSON_DATA-------------------------------------------------------{"deptnoCol":10,"dnameCol":"ACCOUNTING"}{"deptnoCol":20,"dnameCol":"RESEARCH"}{"deptnoCol":30,"dnameCol":"SALES"}{"deptnoCol":40,"dnameCol":"OPERATIONS"}SQL>
函数
别名
关键
关键字
名称
通配符
大写
小写
示例
视图
查询
输入
输出
功能
前缀
单个
字段
字母
情况
方式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
linux创建数据库实例
动力飞翔网络技术开发有限公司
数据库的前世今生论文
软件开发的项目条件
学习ios软件开发作用
联通网络安全法短信
fmrs数据库属于哪种数据库
智合软件开发有限公司
r语言编辑已导入的数据库
高瓴云网络安全概念股
连接网页找不到该服务器
长清网络安全调研报告
ice服务器被炸迷你会怎样
关于加上网络安全防护的通知
php调用sql数据库
数据库php验证码
补天少年 当95后遇到网络安全
ts250服务器销量
数据库可视化交互开发工具
wow1区服务器
服务器读取内存的危害
前端软件开发合同书范本
服务器安全狗 账户安全守护
unity3d读取数据库
网络安全模式打不了中文
苏州远程指导软件开发口碑推荐
智能会议网络安全
制作本地数据库
租什么样的服务器能玩dnf
数据库的一致性是如何实现的