Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本文讲述Oracle Database 19c 中的 JSON_OBJECT 函数的增强功能。1、初始化本文中的示例使用 SCOTT模式中的 DEPT表,如下:-- DROP TABLE DEPT P
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
1u和2u服务器什么区别
森林资源专项调查数据库
中公教育培训机构网络安全
服务器logs文件夹在哪
中国鱼类图像数据库有哪些
mdb数据库管理工具
iphone13无法连接服务器怎么回事
免费服务器引擎
远程服务器快速备份
雅安市公安局网络安全支队
打印机服务器怎么设置密码
链博科技如何构建价值互联网
国内网络技术的需求量
网络安全和防护的重要性
软件开发 体验不好
pubg主播玩的是哪个服务器
阿里云服务器黑洞
计算机软件与网络技术哪个好
琉璃日月服务器宝可梦下载
cad中的模块数据库
京麟网络安全
服务器主机可以关闭吗
服务器投保
网站直连服务器
公安网络安全攻击
下载h1z1服务器
sql命令删除数据库后怎么恢复
门禁网络安全专业大学排名
网络安全必须要知道的几个知识
一台服务器多少淘宝用户