随笔分类 -  Oracle

ORACLE数据库常用SQL及问题
摘要:1.情景展示 当字段值为null时,会给我们的查询带来不小的麻烦,今天就来聊一聊: in(),not in(),like,not like,=,!=或<>在字段值为null时,出现的各种问题。 2.具体分析 以oracle进行举例分析。 现有一张BASE_ORG_INFO表 如上图所示,ORGFUL 阅读全文
posted @ 2024-03-20 15:00 Marydon 阅读(19) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 如何完成oracle表结构和表数据的导入和导出? 2.导出表结构和表数据 点击“工具”-->选择“导出表”; 单击选中要导出的表; 因为我要建表,所以需要勾选上“创建表”选项; 其余的选项对我来说没用,那就全部取消勾选; 点击右侧的文件夹按钮,选择要导出SQL文件的位置以及文件名; 最 阅读全文
posted @ 2024-01-29 15:17 Marydon 阅读(96) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 使用debezium的Oracle插件(io.debezium.connector.oracle.OracleConnector)自动读取Oracle的归档日志。 当我对Oracle数据库受监控的表(待同步表),进行更新操作后,debezium会自动将变更记录推送到kafka当中。 新 阅读全文
posted @ 2023-12-20 17:25 Marydon 阅读(279) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 在Oracle语法当中,它是区分字段名称大小写的(mysql不区分大小写)。 我们可以看到: 在Oracle当中,虽然查询列名一个用的是驼峰命名法,一个用的是小写。 但是,Oracle执行完毕,返回的列名全部转换成了大写。 有时候,为了方便别人调用(数据库间直接调用,比如:我方写好视图 阅读全文
posted @ 2023-08-09 10:01 Marydon 阅读(1148) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 oracle如何根据日期类型计算年龄 2.具体分析 我们可以根据出生日期到系统当前时间,计算出间隔月数,并除以12取整就可以计算出年龄。 3.解决方案 TRUNC(MONTHS_BETWEEN(SYSDATE, P.BIRTH_DAY ) / 12) AS AGE 示例2 SELECT 阅读全文
posted @ 2023-08-09 09:39 Marydon 阅读(3046) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 对于临时存在的数据(读完就没有存在的意义了),我们通常想到的是:使用临时表。 除了临时表,还有没有其它的实现方式呢? 2.具体分析 面向ORACLE编程,我们可以通过TYPE来实现。 3.解决方案 创建一个Object对象,用于存储表结构。 CREATE OR REPLACE TYPE 阅读全文
posted @ 2023-07-26 16:55 Marydon 阅读(755) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 在oracle当中,X表中X字段类型为clob,该字段用来存储base64格式的文件; 当我们在plsql当中使用insert into将clob字段值塞到表中时,会报以下错误: insert into xd_patient_info_ts (datafile) values ('PE 阅读全文
posted @ 2022-12-07 11:52 Marydon 阅读(297) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 如何根据中文,生成汉字首字母拼音? 3.具体实现 CREATE OR REPLACE FUNCTION "GET_ZJM" (P_NAME VARCHAR2) RETURN VARCHAR2 AS V_COMPARE VARCHAR2 (100); V_RETURN VARCHAR2 阅读全文
posted @ 2022-10-13 18:45 Marydon 阅读(547) 评论(0) 推荐(1) 编辑
摘要:1.情景展示 在oracle当中,如何使用md5进行加密? 2.具体分析 通过调用DBMS_OBFUSCATION_TOOLKIT.MD5()函数来实现; DBMS_OBFUSCATION_TOOLKIT.MD5返回的字串,是RAW类型,要正确显示,需要经过Utl_Raw.Cast_To_Raw转换 阅读全文
posted @ 2022-10-13 18:33 Marydon 阅读(486) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 在Oracle当中,如果我们想要对字符串进行分割的话,如何实现? 2.具体分析 Oracle没有现成的内置函数,不过,我们可以自己手动创建一个split()。 如果不想创建函数的话,也可以通过别的方式来实现,具体办法,见文末推荐。 3.解决方案 第一步:创建TYPE类型 CREATE 阅读全文
posted @ 2022-10-13 17:11 Marydon 阅读(8061) 评论(2) 推荐(0) 编辑
摘要:1.number类型 number类型是一个可变长度的数据类型,使用四舍五入实现; 既可以存储整数,也可以存储小数。 2.具体语法 number[(p[, s])] NUMBER类型可以用来存储0、正数、负数; 数据范围是1×10-130 ~ 1 × 10126 ,不能等于或者大于1 × 10126 阅读全文
posted @ 2022-08-24 10:54 Marydon 阅读(5200) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 一个查询结果,要重复使用多次,也就是对查询结果进行重新筛选,如何实现? 如上图所示,对查询结果A表进行了having截取; 现在,要对A表再次筛选,并将查询结果与having结果进行合并,这个时候,我们就可以对表A进行复用。 2.具体分析 Oracle在9i中引入了with语句。wit 阅读全文
posted @ 2022-07-14 17:35 Marydon 阅读(265) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 将数据按照上下级关系,逐级展开,也就是我们常说的树形结构。 逐级展示,直到最后一级(注意:所有包含子级的都会被展开,上图只是示例,知道是这个意思就行了)。 2.具体分析 只要表里,存的字段有父级ID,就能使用CONNECT BY PRIOR来实现。 3.解决方案 语法: SELECT 阅读全文
posted @ 2022-06-24 16:04 Marydon 阅读(509) 评论(0) 推荐(0) 编辑
摘要:方式一:循环游标 CREATE OR REPLACE PROCEDURE "PRO_ADATA_CHECK_TABLE2"( IN_ORG_CODE VARCHAR2, IN_BATCH_CODE VARCHAR2, OUT_TABLENAME OUT VARCHAR2 ) IS --设置变量 V_ 阅读全文
posted @ 2022-06-24 10:54 Marydon 阅读(2054) 评论(0) 推荐(2) 编辑
摘要:1.情景展示 在实际开发过程中,我们经常会有两个日期时间间隔的计算,比如:计算相隔的毫秒数。 2.将日期转秒 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间:1970年01月01日08时00分00秒)起至现在的总秒数。 得到自1970年1月1日以来的秒数。 SELECT ( 阅读全文
posted @ 2022-06-09 19:35 Marydon 阅读(9084) 评论(0) 推荐(1) 编辑
摘要:1.情景展示 现在需要将B表的数据插入A表,如何进行快速操作? 2.具体分析 批量插入,我们可以先将数据查询出来,然后再插入到指定表当中; 如何批量插入查询到的数据? 3.解决方案 以mysql进行举例说明 方式一:指定表字段; 当我们需要只往A表的部分字段插入时,使用这种方式; 比如:主键不需要我 阅读全文
posted @ 2022-05-24 10:39 Marydon 阅读(7473) 评论(0) 推荐(2) 编辑
摘要:1.情景展示 在SQL当中,列转行是常用的数据查询操作之一; 以Oracle为例,我们可以使用合并列函数WM_CONCAT(),快速将多列转换成一行。 2.WM_CONCAT() 语法: WM_CONCAT(列名) SELECT TO_CHAR(WM_CONCAT(T7.OPERATION_NAME 阅读全文
posted @ 2022-04-06 16:29 Marydon 阅读(4472) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 在Oracle当中,分组求和是很常见的一种查询方式,问题在于: 当数据为空时,如何解决将结果显示为0而不是null? 2.具体分析 0与null进行加减乘除四则运算的结果为null,不是''。 虽然在plsql当中,null和''显示的结果都为空白,但这并不代表null就是''。 su 阅读全文
posted @ 2022-03-23 11:36 Marydon 阅读(750) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 在Oracle当中,进行加减乘除运算时,如何保留两位小数? 当不足两位小数时,如何进行补0? 2.具体分析 从数据源进行管控 如果是从数据源上进行管理,我们可以直接定义要保存的数据的格式(需要几位小数)提前定义好。 比如,规定数据格式为:保留两位小数。 number(10,2)代表的含 阅读全文
posted @ 2022-03-17 18:58 Marydon 阅读(6210) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 在oracle当中,如何拆分以逗号隔开的字符串?(将字符串按指定字符拆分成多行数据) 比如:411600,411602,411603,411606,411609,411621,411622,411623,411624,411625,411626,411627,411628,411643 阅读全文
posted @ 2022-03-14 17:56 Marydon 阅读(16255) 评论(0) 推荐(1) 编辑