oracle json笔记

文章目录

有些数据是以json格式存储,常规的sql语句操作起来不太方便,别担心,数据库早就有对应的函数了。

json_value

适用于从json中提取单个值。

语法:

json 复制代码
JSON_VALUE(expression, path RETURNING data_type DEFAULT default_value ON ERROR error_clause)

.(点号)表示上下级关系。

属性的表示方法: $.一级属性.二级属性.三级属性...

数组的表示方法: $.columns0.title

json_value示例
sql 复制代码
SELECT 
json_value(字段名, '$.user.name' RETURNING VARCHAR2) AS name
FROM 表名 t;
json_value on error如何使用 TODO

这个好像和pl/sql编程有关,直接写在语句里面好像不成立,有时间研究下。

json_query

适用于从json中提取对象或数组,如果是个值,反而会返回空。

语法:

json 复制代码
JSON_QUERY(expression, path [ RETURNING data_type ] [ PRETTY ] [ WITH UNIQUE KEYS ] [ error_clause ])
json_query示例

示例:

sql 复制代码
SELECT json_query(字段名,'$.user') FROM 表名

json_table

将json数据展开为关系表形式,允许使用sql查询json的各个部分。

语法:

json 复制代码
JSON_TABLE(expression, path
  COLUMNS (column_name column_type PATH 'json_path' [ DEFAULT default_expr ] [ error_clause ] ...)
)
json_table 示例
c 复制代码
SELECT jt.* FROM 表名, 
json_table(
字段名,'$.*'
columns(
	title VARCHAR2(100) PATH '$.*'
	
)
) jt

说实话,没太看懂怎么用,拿的数据也感觉不对。

对数据有什么要求呢? 是以数组的形式还是对象的形式呢? 有时间看下。TODO

json_exists

json_exists示例

正确示例:

sql 复制代码
 SELECT *
 FROM 表名
 WHERE JSON_EXISTS(字段名, '$.aaa'); 

注:json_exists()一般用于判断条件中,如果用在select的列中,会报错,ORA-40458: 在谓词外部使用了 JSON_EXISTS

json_exists报错 ORA-40458: 在谓词外部使用了 JSON_EXISTS

错误示例:

sql 复制代码
SELECT JSON_EXISTS('{"name": "John", "age": 30, "address": {"city": "New York", "zipcode": "10001"}}', '$.address') AS address_exists
FROM dual;

这条语句从网上找的,实测报错,所以实践出真知是很有道理的。

json_object

json_array

json_mergepatch

json_objectagg

json_arrayagg

json_scalar

json_dataguide

其他

不错的文章

https://blog.csdn.net/mbh12333/article/details/139126090

相关推荐
智者知已应修善业16 小时前
【4060BD_5V应用电路图】2022-12-24
驱动开发·经验分享·笔记·硬件架构·硬件工程
oradh18 小时前
Oracle Undo问题总结(ORA-600 [4xxx] 系列错误)
数据库·oracle
达梦数据18 小时前
DMDRS辅助表生成规则与作用
数据库·oracle
Asurplus18 小时前
【SpringBoot4】3、从SpringBoot4升级Sa-Token1.46.0报错
redis·sa-token·json·jackson·springboot4
小李不想当小白19 小时前
DMA直接存储器存取(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·分享
2601_9653842621 小时前
口腔黏膜清洁的工程化路径:从表面形貌表征到清洁策略匹配
经验分享·笔记
泡泡鱼(敲代码中)21 小时前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
代码中介商1 天前
C++ 预约系统实战(三):服务端实现——libevent 事件驱动与业务路由
c++·json·c/s
达梦数据1 天前
DMDRS空间数据类型说明:Oracle、DM8、MySQL空间数据类型映射
数据库·mysql·oracle
Hotchip_MEMS1 天前
传统咪头与MEMS硅麦:雾化器气流传感方案对比
人工智能·笔记·物联网·电脑·制造