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

JSON 系列之2:JSON简单查询

本文为Oracle数据库JSON学习系列的第2篇,讲述如何对存储在数据库中的JSON文档进行简单的查询。

创建测试表,插入2条数据:

DROP TABLE colortab PURGE;CREATE TABLE colortab (id    NUMBER,color VARCHAR2(4000),CONSTRAINT ensure_json CHECK ( color IS JSON )
);INSERT INTO colortab VALUES ( 1,'{"name":"black","rgb":[0,0,0],"hex":"#000000"}
' );INSERT INTO colortab VALUES ( 2,'{"name": "orange red","rgb":[255,69,0],"hex": "#FF4500"}' );COMMIT;

查询使用dot notation即可,非常直观:

SQL> SELECT c.color.name from colorTab c;NAME      
----------
black
orange redSQL> SELECT c.color.rgb from colorTab c;RGB       
----------
[0,0,0]
[255,69,0]SQL> SELECT c.color.rgb[0] from colorTab c;RGB       
----------
0
255

可以看到,对于标量和数组都可以查询,数组的第一个元素索引为0。

注意,这个别名是必须的,否则报错:

SQL> SELECT color.name from colorTab;在行: 3 上开始执行命令时出错 -
SELECT color.name from colorTab
错误位于命令行: 3 列: 8
错误报告 -
SQL 错误: ORA-00904: "COLOR"."NAME": 标识符无效https://docs.oracle.com/error-help/db/ora-00904/00904. 00000 -  "%s: invalid identifier"
*Cause:    The identifier or column name entered was invalid.
*Action:   Ensure the followingMore Details :
https://docs.oracle.com/error-help/db/ora-00904/

对于表中一个不存在的列,SELECT会报错;但对于JSON文档中一个不存在的域,则不会报错,返回null。这正是 flexible schema 所需要的。

SQL> SELECT c.color.nofield from colorTab c;NOFIELD   
----------已选择 2 行。

如果你希望报错,可以修改初始化参数json_behavior,默认值是ON_ERROR:NULL

SQL> alter session set json_behavior='on_error:error';Session已变更。SQL> SELECT c.color.nofield from colorTab c;在行: 5 上开始执行命令时出错 -
SELECT c.color.nofield from colorTab c
错误位于命令行: 5 列: 29
错误报告 -
SQL 错误: ORA-40462: JSON 路径 '$.nofield' 的求值结果为无值。https://docs.oracle.com/error-help/db/ora-40462/40462. 00000 -  "JSON path '%s' evaluated to no value."
*Cause:    The specified JavaScript Object Notation (JSON) path expressiondid not select a value.
*Action:   Correct the JSON path expression.More Details :
https://docs.oracle.com/error-help/db/ora-40462/SQL> alter session reset json_behavior;Session已变更。

参考

  • First Steps with JSON: Simple Queries

相关文章:

JSON 系列之2:JSON简单查询

本文为Oracle数据库JSON学习系列的第2篇,讲述如何对存储在数据库中的JSON文档进行简单的查询。 创建测试表,插入2条数据: DROP TABLE colortab PURGE;CREATE TABLE colortab (id NUMBER,color VARCHAR2(4000),CONSTRAINT ensure_json CH…...

SQL 简单查询

目录 一、投影查询 1、指定特定列查询 2、修改返回列名查询 3、计算值查询 二、选择查询 1、使用关系表达式 2、使用逻辑表达式 3、使用 BETWEEN关键字 4、使用 IN关键字 5、使用 LIKE关键字 6、使用 IS NULL/ NOT NULL关键字 7、符合条件查询 三、聚合函数查询 一…...

YOLOv9-0.1部分代码阅读笔记-metrics.py

metrics.py utils\metrics.py 目录 metrics.py 1.所需的库和模块 2.def fitness(x): 3.def smooth(y, f0.05): 4.def ap_per_class(tp, conf, pred_cls, target_cls, plotFalse, save_dir., names(), eps1e-16, prefix""): 5.def compute_ap(recall, prec…...

KaiOS 4.0 | DataCall and setupData implemention

相关文档 1、KaiOS 3.1 系统介绍 KaiOS 系统框架和应用结构(APP界面逻辑)文章浏览阅读842次,点赞17次,收藏5次。对于Java开发者而言,理解JS的逻辑调用是有点困难的。而KaiOS webapp开发又不同于现代的web开发,更像chrome浏览器内嵌模式。在这里梳理一下kaios平台web应用…...

nginx-rtmp服务器搭建

音视频服务器搭建 本文采用 nginx/1.18.0和nginx-rtmp-module模块源代码搭建RTMP流媒体服务器 流程 查看当前服务器的nginx版本下载nginx和nginx-rtmp-module源代码重新编译nginx,并进行相关配置(nginx.conf、防火墙等)客户端测试连接测试搭…...

[c++进阶(三)]单例模式及特殊类的设计

1.前言 在实际场景中,总会遇见一些特殊情况,比如设计一个类,只能在堆上开辟空间, 或者是设计一个类只能实例化一个对象。那么我们应该如何编写代码呢?本篇将会详细的介绍 本章重点: 本篇文章着重讲解如何设计一些特殊 的类,包括不能被拷贝,只能在栈/堆上…...

企业内训|高智能数据构建和多模态数据处理、Agent研发及AI测评技术内训-吉林省某汽车厂商

吉林省某汽车厂商为提升员工在AI大模型技术方面的知识和实践能力,举办本次为期8天的综合培训课程。本课程涵盖“高智能数据构建与智驾云多模态数据处理”、“AI Agent的研发”和“大模型测评”三大模块。通过系统梳理从非结构化数据的高效标注与融合,到L…...

009 Qt_显示类控件_QLCDNumber、ProgressBar、Calendar

文章目录 前言LCD NumberProgressBarCalendar Widget 小结 前言 本文将会向你介绍显示类控件中QLCDNumber显示数字、ProgressBar进度条、Calendar日历 LCD Number QLCDNumer 是⼀个专门用来显示数字的控件. 类似于 “老式计算器” 的效果. 属性说明intValueQLCDNumber 显示…...

--spring.profiles.active=prod

rootproduct-qualification:~# ps -ef | grep java root 5110 1 3 16:57 ? 00:00:54 java -jar productQualification.jar --spring.profiles.activeprod root 6476 5797 0 17:26 pts/0 00:00:00 grep --colorauto java好的,你使用 ps …...

深入解析JVM中对象的创建过程

1. 引言 对象是面向对象编程的核心概念之一,它们封装了数据和行为,构成了应用程序的基本构建块。然而,在Java语言中,每当使用new关键字或其他方式创建一个新对象时,背后发生了什么?这个问题的答案隐藏在JV…...

使用开源在线聊天工具Fiora轻松搭建个性化聊天平台在线交流

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:人工智能教程 文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime …...

ffmpeg之显示一个yuv照片

显示YUV图片的步骤 1.初始化SDL库 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像: 目的:创建一个…...

MySQL中Performance Schema库的详解(下)

昨天说了关于SQL语句相关的,今天来说说性能相关的,如果没有看过上篇请点传送门https://blog.csdn.net/2301_80479959/article/details/144693574?fromshareblogdetail&sharetypeblogdetail&sharerId144693574&sharereferPC&sharesource…...

【Rust自学】7.1. Package、Crate和定义Module

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 7.1.1. Rust的代码组织 代码组织主要包括: 那些细节可以对外暴露,而哪些细节是私有的在作用域内哪些名称有效… …...

【Git】-- 版本说明

Alpha:是内部测试版,一般不向外部发布,会有很多 Bug .一般只有测试人员使用。Beta:也是测试版,这个阶段的版本会一直加入新的功能。在 Alpha 版之后推出。RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台…...

1919C. Grouping Increases

问题描述 序列 X X X&#xff0c;划分成两个字序列 A , B A,B A,B&#xff0c;其中惩罚是 A , B A,B A,B之中&#xff0c; A [ i ] < A [ i 1 ] , B [ i ] < B [ i 1 ] A[i] < A[i1], B[i] < B[i1] A[i]<A[i1],B[i]<B[i1]的个数 思路 拆分 X X X&#xf…...

Pion WebRTC 项目教程

Pion WebRTC 项目教程 webrtc Pure Go implementation of the WebRTC API [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/we/webrtc 1. 项目目录结构及介绍 Pion WebRTC 项目的目录结构如下&#xff1a; pion/webrtc ├── api ├── examples ├── inter…...

【安全编码】Web平台如何设计防止重放攻击

我们先来做一道关于防重放的题&#xff0c;答案在文末 防止重放攻击最有效的方法是&#xff08; &#xff09;。 A.对用户密码进行加密存储使用 B.使用一次一密的加密方式 C.强制用户经常修改用户密码 D.强制用户设置复杂度高的密码 如果这道题目自己拿不准&#xff0c;或者…...

VUE3+django接口自动化部署平台部署说明文档(使用说明,需要私信)

网址连接&#xff1a;http://118.25.110.213:5200/#/login 账号/密码&#xff1a;renxiaoyong 1、VUE3部署本地。 1.1本地安装部署node.js 1.2安装vue脚手架 npm install -g vue/cli # 或者 yarn global add vue/cli1.3创建本地项目 vue create my-vue-project1.4安装依赖和插…...

Python爬虫(入门+进阶)

简介 围绕 Python 爬虫展开&#xff0c;包括四个章节。第一章从 Python 爬虫入门&#xff0c;涵盖爬虫概念、Requests 爬取、Xpath 解析、数据保存及入库等知识&#xff0c;并结合知乎、豆瓣、淘宝等案例讲解浏览器抓包及 Selenium 爬取动态网页。第二章介绍 Scrapy 框架&…...

Gemma-3-12B-IT WebUI性能实测:不同问题类型的响应时间对比

Gemma-3-12B-IT WebUI性能实测&#xff1a;不同问题类型的响应时间对比 1. 测试背景与目标 1.1 为什么关注响应时间&#xff1f; 在实际使用大语言模型WebUI时&#xff0c;响应时间是最直接影响用户体验的指标之一。想象一下&#xff0c;当你向AI助手提出问题时&#xff0c;…...

测序技术演进:从Sanger到纳米孔的突破与应用

1. 测序技术的前世今生&#xff1a;从实验室到生命密码解读 想象一下你手里拿着一本由30亿个字母组成的书&#xff0c;每个字母只有0.34纳米大小&#xff0c;而你的任务是准确无误地抄写整本书——这就是基因组测序工作的真实写照。我第一次接触测序技术是在2008年&#xff0c;…...

5分钟快速部署:GTA5最强免费防护菜单YimMenu终极指南

5分钟快速部署&#xff1a;GTA5最强免费防护菜单YimMenu终极指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…...

开源多人游戏解决方案:Nucleus Co-op让单机游戏秒变多人派对

开源多人游戏解决方案&#xff1a;Nucleus Co-op让单机游戏秒变多人派对 【免费下载链接】splitscreenme-nucleus Nucleus Co-op is an application that starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirro…...

DAMOYOLO-S模型蒸馏实战:将大模型知识迁移至轻量模型

DAMOYOLO-S模型蒸馏实战&#xff1a;将大模型知识迁移至轻量模型 你是不是也遇到过这样的烦恼&#xff1f;好不容易训练出一个精度很高的目标检测模型&#xff0c;比如DAMOYOLO-S&#xff0c;效果确实不错&#xff0c;但模型体积大、计算慢&#xff0c;想把它放到手机或者边缘…...

C++11三大核心特性深度解析:类型特征、时间库与原子操作

C11三大核心特性深度解析&#xff1a;类型特征、时间库与原子操作 引言 C11标准的发布标志着C语言进入了现代编程的新纪元。在众多令人瞩目的新特性中&#xff0c;类型特征&#xff08;<type_traits>&#xff09;、时间库&#xff08;&#xff09;和原子操作&#xff0…...

别再折腾本地环境了!用Google Colab免费GPU跑通YOLOv8的保姆级教程

别再折腾本地环境了&#xff01;用Google Colab免费GPU跑通YOLOv8的保姆级教程 第一次接触YOLO目标检测模型时&#xff0c;我被它强大的实时检测能力震撼了——直到尝试在本地配置环境。CUDA版本冲突、PyTorch安装报错、显卡驱动不兼容...这些坑让我的热情迅速降温。直到发现G…...

BigDL-2.x DLlib深度指南:用Spark DataFrames构建分布式深度学习应用

BigDL-2.x DLlib深度指南&#xff1a;用Spark DataFrames构建分布式深度学习应用 【免费下载链接】BigDL-2.x BigDL: Distributed TensorFlow, Keras and PyTorch on Apache Spark/Flink & Ray 项目地址: https://gitcode.com/gh_mirrors/bi/BigDL-2.x BigDL-2.x是一…...

3步解锁CefFlashBrowser:让Flash内容重获新生的终极方案

3步解锁CefFlashBrowser&#xff1a;让Flash内容重获新生的终极方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 当你珍藏多年的Flash游戏无法启动&#xff0c;企业培训系统因浏览器不…...

vllm 安装

别在Windows里安装vllm了&#xff0c;总有很多问题&#xff0c; 可以在WSL2的Unbuntu 24.04里安装vllm&#xff0c;轻松完成 一、相关链接 vllm https://docs.vllm.ai/en/latest/index.html github https://github.com/vllm-project/vllm vLLM 中文站 https://vllm.hyper.…...