Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文讲述Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能。1、初始化本文中的示例使用 SCOTT模式中的 DEPT表,如下:-- DROP TABLE DEPT P
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
西安纸贵互联网科技有限公司
科技制造互联网公司
深圳科技互联网
易互联网科技有限公司
远信互联网科技
碳银互联网科技有限公司
互联网科技视频素材
互联网金融监管科技
广西拼得多互联网科技有限公司
河南猎农互联网科技有限公司
保险科技服务互联网营销体系
为客找房互联网科技公司怎么样
上海钢联属于互联网科技股吗
智帮互联网科技公司最近动向
中国互联网有什么科技
广州千川互联网科技有限公司
互联网安防科技感
科技互联网企业在行动
科技发展第三阶段互联网时代
颐高云石互联网科技
上海喔噻互联网科技有限公司
科技与互联网
中资互联网科技
易互联网科技有限公司
科技互联网公司logo
互联网科技汛
互联网科技素材视频竖屏
如何创新互联网科技
启辰互联网科技
扫呗互联网科技有限公司