首页 > 数据库 >Oracle中读取JSON格式数据实战指南(oracle中读json)

Oracle中读取JSON格式数据实战指南(oracle中读json)

时间:2023-05-25 15:13:00浏览次数:75  
标签:JSON 查询 Oracle json oracle 格式 type

Oracle中读取JSON格式数据实战指南

 

随着大数据、云计算等技术的快速发展,JSON(JavaScript Object Notation)格式的数据越来越广泛应用于数据交互和存储中。Oracle数据库支持JSON格式数据的存储和查询,本篇文章将介绍如何在Oracle中读取JSON格式数据,并提供相关代码示例。

 

1.创建JSON类型表

 

在Oracle 12c及以上版本中,可以通过CREATE TABLE语句创建一个JSON类型的表。

 

CREATE TABLE json_table
(id NUMBER PRIMARY KEY,
doc JSON);

 

其中,doc列的数据类型为JSON,用于存储JSON格式数据。

 

2.将JSON格式数据插入表中

 

可以通过INSERT INTO语句将JSON格式数据插入json_table表中。

 

INSERT INTO json_table (id, doc)
VALUES (1,'{
"name" : "John Smith",
"age" : 35,
"eml" : "[email protected]",
"phone" : [
{
"type" : "home",
"number" : "123-456-7890"
},
{
"type" : "work",
"number" : "098-765-4321"
}
]
}');

 

3.查询JSON格式数据

 

在Oracle中,可以使用JSON_VALUE、JSON_QUERY、JSON_TABLE三个函数来查询JSON格式数据。

 

3.1.使用JSON_VALUE查询指定字段

 

JSON_VALUE函数用于查询指定字段的值,例如查询”eml”字段的值:

 

SELECT JSON_VALUE(doc, '$.eml')
FROM json_table
WHERE id = 1;

 

输出结果为:[email protected]

 

3.2.使用JSON_QUERY查询子节点

 

JSON_QUERY函数用于查询子节点,例如查询”phone”子节点下的所有值:

 

SELECT JSON_QUERY(doc, '$.phone')
FROM json_table
WHERE id = 1;

 

输出结果为:

 

[
{
"type" : "home",
"number" : "123-456-7890"
},
{
"type" : "work",
"number" : "098-765-4321"
}
]

 

3.3.使用JSON_TABLE查询子节点中的特定值

 

JSON_TABLE函数用于查询子节点中的特定值,例如查询”phone”子节点中”type”为”home”的所有值:

 

SELECT phone.*
FROM json_table,
JSON_TABLE(doc,'$.phone[*]'
COLUMNS (
"type" varchar2(20) PATH '$.type',
"number" varchar2(20) PATH '$.number'
)) phone
WHERE id = 1 AND phone."type"='home';

 

输出结果为:

 

type number
home 123-456-7890

 

以上就是在Oracle中读取JSON格式数据的实战指南,随着JSON数据在大数据领域的广泛应用,掌握如何在Oracle中读取JSON数据将变得越来越重要。

  ORACLEoracle教程ORACLE资讯 Oracle中进行去除重复数据的操作是什么-群英 (qycn.com)    

标签:JSON,查询,Oracle,json,oracle,格式,type
From: https://www.cnblogs.com/roak/p/17431317.html

相关文章

  • Linux系统,使用PHP连接ORACLE数据库
    首先安装ORACLE的InstantClient环境:在这里下载因为我需要连接11.2.0.4.0版本的ORACLE数据库,所以选取下载了basic-11.2.0.4.0-1.x86_64.rpm和devel-11.2.0.4.0-1.x86_64.rpm,使用如下命令安装:rpm-ivhoracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpmrpm-ivhoracle......
  • 多种数据库注入复线-墨者学院SQL手工注入漏洞测试(Oracle数据库)
    SQL手工注入漏洞测试(Oracle数据库)1.判断注入点判断注入类型为数字型2.用orderby获取列数2时正常,3时报错,得到列数为23.联合查询获取占位符常规联合查询报错这是由于oracle数据库语法十分严格,在后面需要指定数据表和准确的字符类型我们使用dual表,dual是oracle中的一个实际存......
  • Oracle数据安全技术
    一:概述   Oracle是Oracle公司开发的一种面向网络计算机并支持对象-关系模型的数据库产品。它是一高级及结构化查询语言为基础的大型关系数据库。是目前最流行的客户/服务器体系结构的数据库之一。   Oracle之所以备受用户喜爱,是因为它具有以下突出的特点。   <1>支......
  • oracle常用关键字
    1.sysdatesysdate显示系统当前日期和时间的函数。 2.THIRD_SYSTEM_CONFIG_GK_PK.nextval在Oracle数据库中,THIRD_SYSTEM_CONFIG_GK_PK.nextval是一个序列号生成器。THIRD_SYSTEM_CONFIG_GK_PK.nextval的作用是:1.为第三系统配置表生成唯一的主键值2.每调用一次nextval......
  • geojson格式数据
    可以通过一下地址验证https://geojson.io/#map=11.2/38.2756/116.7917一个面数据的情况,features是一个数组,geometry的type=Polygon表示一个面数据,可以存放多个面数据,以下就存放了一个面{"type":"FeatureCollection","features":[{"type":&quo......
  • lightdb创建oracle兼容分区表
    zjh@postgres=#createtablehash_part_tab(idnumber,deal_datedate,area_codenumber,nbrnumber,contentsvarchar2(4000))zjh@postgres-#partitionbyhash(deal_date)zjh@postgres-#PARTITIONS12;ERROR:pleasesetoraclecompatiblemodefororaclepartit......
  • 自定义注解实现数据序列化时进行数据脱敏(基于springboot默认jackjson)、消息转换器
    消息转换器fastjson与jackjson问题在springboot中使用fastjson的@jsonField无效原因:在springboot默认有json(jackjson)解析工具,所以使用fastjson不会生效解决方案替换默认的解析工具(笔者不推荐,这里根据自己项目决定)fastjson替换默认的jackjson第一种方法bean方法packagecom......
  • java将wkt面数据转geojson和elasticsearch的shape数据
    wkt面数据转geojsonimportcom.alibaba.fastjson.JSONException;importcom.alibaba.fastjson.JSONObject;importorg.locationtech.jts.geom.Coordinate;importorg.locationtech.jts.geom.Geometry;importorg.locationtech.jts.io.ParseException;importorg.location......
  • oracle12c linux安装教程
    1、安装包下载2、环境准备2.1安装gcc2.2内核参数设置2.3资源限制配置2.4硬件环境准备2.5Xmanger安装2.6创建文件夹2.7创建用户和组2.8图像界面设置2.9上传并解压3、安装3.1执行安装命令3.2安装选择3.3环境变量配置4、验证4.1启动pdb4.2设置pdb随cdb自启动1、安装......
  • kettle 连接oracle 12c以上数据库报错 ORA-12505, TNS:listener does not currently k
    在通过kettle连接oracle数据库时报错,但通过plsql是能正常连接的,ORA-12505,TNS:listenerdoesnotcurrentlyknowofSIDgiveninconnectdescriptororg.pentaho.di.core.exception.KettleDatabaseException:来看oracle数据库版本select*fromv$version;连接oracle12c以......