oracle数据库解析json格式
随着非关系型数据大规模使用,以json格式产生的数据也出现在我所管理的Oracle数据库的CLOB字段里面,使用过程中就需要解析出指定键的值。
使用了最新版本
如果Oracle版本为12.1.0.2的,数据库直接支持SQL中解析字段中的json内容。具体使用可以参照Oracle的官方说明。
早期版本
虽然没有原生的支持,但是可以通过安装开源的PLJSON包实现对JSON对象的操作。整个安装包可以从github下载。
以下步骤给出如何使用PLJSON的方式从字段的JSON内容中提取指定KEY值的VALUE。
- 创建包含json内容的表。
create table pljson_table_test (num number not null, col clob);
insert into pljson_table_test values(1,
'{"data":
{
"name": "name 1",
"description": "Cloud computing can support a company''s speed and agility, ...",
"type": "link",
"created_time": "2015-05-12T16:26:12+0000",
"shares": { "count": 1 },
"extra": "x1",
"maps" : [ true ]
}
}');
select num, name, map, count
from pljson_table_test,
table(
pljson_table.json_table( --需要解析的表
col,
pljson_varray('data.name', 'data.extra', 'data.maps', 'data.shares.count', 'data.missing'), --指定需要的解析的KEY值
pljson_varray('name', 'extra', 'map', 'count', 'whatelse')) --解析出来之后的字段别名
)
order by num
/
20180123 因回答网友问题,新增以下内容,用于处理json数组。
code:
declare
list_value json_list := json_list('[{"code":"1","status":1},{"code":"2","status":0},{"code":"3","status":0},{"code":"4","status":0}]');
code_value varchar(10);
status_value int(2);
begin
dbms_output.put_line('Count = '||list_value.count);
for i in 1 .. list_value.count
loop
code_value := pljson_ext.get_string(json(list_value.get(i)),'code');
status_value := pljson_ext.get_number(json(list_value.get(i)),'status');
dbms_output.put_line('code = ' || code_value || '; status = ' || status_value );
end loop;
end;
/
output:
Count = 4
code = 1; status = 1
code = 2; status = 0
code = 3; status = 0
code = 4; status = 0
--EOF--
oracle数据库解析json格式的更多相关文章
- Django 1.8.11 查询数据库返回JSON格式数据
Django 1.8.11 查询数据库返回JSON格式数据 和前端交互全部使用JSON,如何将数据库查询结果转换成JSON格式 环境 Win10 Python2.7 Django 1.8.11 返回多 ...
- WP8解析JSON格式(使用DataContractJsonSerializer类)(推荐)
DataContractJsonSerializer是.NET自带的类,在解析JSON格式的时候使用起来方便快捷,至于生成方面由于暂时没用到就没去看了.使用需要引用System.Runtime.Ser ...
- WP8解析JSON格式(使用Newtonsoft.Json包)
DOTA2 WebAPI请求返回的格式有两种,一种是XML,一种是JSON,默认是返回JSON格式. 这里举一个简单的解析JSON格式的例子(更多JSON操作): { "response&q ...
- 解析json格式数据
实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...
- 用GSON解析Json格式数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
- 实现android上解析Json格式数据功能
实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...
- Python3基础 json.loads 解析json格式的数据,得到一个字典
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- $Java-json系列(一):用GSON解析Json格式数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
- 使用google的GSON解析json格式的数据
GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...
随机推荐
- BQ24296充电管理芯片使用过程中的注意事项
BQ24296遇到的一点问题 概述:BQ24296是TI出品的具有窄范围VDC控制.基于I2C通讯的最大支持3A充电电流的开关式电源路径管理芯片.可以轻松实现2A以上的大电流充电,能量转换效率达到90 ...
- 配置rt-thread开发环境(配置系统,生成系统镜像)
配置rt-thread开发环境 ===========Python============= 1.Python的下载地址:http://www.python.org/ftp/python/ 链接中有各 ...
- day 2
三目运算符 A?B:C 等价于 if(A) B; else C; 实例: int i: i=(3>2?5:1) //如果3>2为真,i的值为5,否则为1 printf(“%d”,i): ...
- 《利用python进行数据分析》读书笔记--第十一章 金融和经济数据应用(一)
自2005年开始,python在金融行业中的应用越来越多,这主要得益于越来越成熟的函数库(NumPy和pandas)以及大量经验丰富的程序员.许多机构发现python不仅非常适合成为交互式的分析环境, ...
- mysql局域网连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION; //从任何主机连接到mysql服务 ...
- SPI总线(同步)
一.SPI总线简介 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口.SPI 用 于CPU与各种外围器件进行全双工. ...
- MFC编程入门之十三(对话框:属性页对话框及相关类的介绍)
前面讲了模态对话框和非模态对话框,本节来将一种特殊的对话框--属性页对话框. 属性页对话框的分类 属性页对话框想必大家并不陌生,XP系统中桌面右键点属性,弹出的就是属性页对话框,它通过标签切换各个页面 ...
- myeclipse中disable maven nature
1.直接原因:出现这个问题,一般都是因为手抖误操作. 但是出现了问题,还不知道从何查起. 可能出现的场景是eclipse安装Maven插件后,右键项目却找不到Maven按钮,继而无法编译项目. 2.实 ...
- 通过一行代码学习javascript
[].forEach.call($$("*"), function (a){ a.style.outline = "1px solid #"+(~~(Math. ...
- CSS3中媒体查询,更换样式表
<link rel="stylesheet" href="css/1.css" media="(min- width:600px)"& ...