当前位置: 首页 > news >正文

oracle json笔记

文章目录

      • json_value
        • json_value示例
        • json_value on error如何使用 TODO
      • json_query
        • json_query示例
      • json_table
        • json_table 示例
      • json_exists
        • json_exists示例
        • json_exists报错 ORA-40458: 在谓词外部使用了 JSON_EXISTS
      • json_object
      • json_array
      • json_mergepatch
      • json_objectagg
      • json_arrayagg
      • json_scalar
      • json_dataguide
    • 其他
      • 不错的文章

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

json_value

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

语法:

JSON_VALUE(expression, path RETURNING data_type DEFAULT default_value ON ERROR error_clause)

.(点号)表示上下级关系。
属性的表示方法: $.一级属性.二级属性.三级属性…
数组的表示方法: $.columns[0].title

json_value示例
SELECT 
json_value(字段名, '$.user.name' RETURNING VARCHAR2) AS name
FROM 表名 t;

json_value on error如何使用 TODO

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

json_query

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

语法:

JSON_QUERY(expression, path [ RETURNING data_type ] [ PRETTY ] [ WITH UNIQUE KEYS ] [ error_clause ])

json_query示例

示例:

SELECT json_query(字段名,'$.user') FROM 表名

json_table

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

语法:

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

说实话,没太看懂怎么用,拿的数据也感觉不对。
对数据有什么要求呢? 是以数组的形式还是对象的形式呢? 有时间看下。TODO

json_exists

json_exists示例

正确示例:

 SELECT *
 FROM 表名
 WHERE JSON_EXISTS(字段名, '$.aaa'); 

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

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

错误示例:

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

相关文章:

  • 线程同步与互斥(下)
  • 关于 Spring Boot + Vue 前后端开发的打包、测试、监控、预先编译和容器部署 的详细说明,涵盖从开发到生产部署的全流程
  • spring 依赖注入的好处
  • vscode远程连接树莓派报错> Host key verification failed.> 过程试图写入的管道不存在。
  • mysql-innodb_autoinc_lock_mode=2 和innodb_autoinc_lock_mode=1可能引发的问题
  • CISP-PTE WEB题通关记录
  • 基于Kubeadm实现K8S集群扩缩容指南
  • 第十一届 蓝桥杯 嵌入式 省赛
  • cache更新策略
  • Redis Java 客户端 之 Jedis
  • BERT 模型是什么
  • SQL ​​主键(Primary Key)
  • 什么是具身智能?其发展五大趋势预测
  • 【C++游戏引擎开发】第12篇:GLSL语法与基础渲染——从管线结构到动态着色器
  • 循环神经网络 - 长短期记忆网络的门控机制
  • [原创](现代C++ Builder 12指南): 如何使用异常(try catch)?
  • 从 SaaS 到 MCP:构建 AI Agent 生态的标准化服务升级之路
  • 基于微信小程序的校园跑腿系统的设计与实现
  • MV-DLS600P激光振镜立体相机(MV-DLS600P)重要参数解析
  • Linux 守护进程浅析
  • 东莞网站制作/郑州网站优化seo
  • 浏览器网站大全免费/seo基础培训
  • wordpress改文章日期/东莞seo排名收费
  • seo网站优化方法/网络营销推广是做什么的
  • 热门的网站模板下载/市场营销网站
  • 做网站首先必须切割图片吗/搜索排名怎么做