随笔分类 -  Oracle

ORACLE数据库常用SQL及问题
摘要:1.情景展示 现在有两者表,表1中的主键id字段和表2的index_id相对应。如何删除两表非关联数据? 2.解决方案 --第1步 delete from VIRTUAL_CARD t where t.index_id not in (select id from PRIMARY_INDEX); - 阅读全文
posted @ 2019-06-21 11:43 Marydon 阅读(1122) 评论(0) 推荐(2) 编辑
摘要:1.情景展示 现在,机构表数据中机构名称有重复数据,如何筛选出来? 2.分析 第一步:统计是否存在重复数据。 方式一: 方式二: 说明表中确实存在重复数据 第二步:统计重复次数及机构名称。 需要通过group by和having实现。 第三步:查询出重复数据。 SELECT * FROM ORG_A 阅读全文
posted @ 2019-06-12 17:32 Marydon 阅读(2474) 评论(0) 推荐(1) 编辑
摘要:1.情景展示 如何根据身份证号推算出出生日期? 2.解决方案 --根据身份证号计算出生日期 SELECT DECODE(LENGTH(ID_CARD), 18, SUBSTR(ID_CARD, 7, 8), 15, '19' || SUBSTR(ID_CARD, 7, 6)) 出生日期 FROM V 阅读全文
posted @ 2019-06-05 11:38 Marydon 阅读(5508) 评论(0) 推荐(1) 编辑
摘要:1.情景展示 筛选出指定字段字符长度既不等于18也不等于15的数据。 2.原因分析 第一步:按字符串度进行分组统计; 第二步:筛选数据。 你会发现,只将length=17统计了出来,长度不存在的数据没有统计出来。 3.解决方案 统计长度为0的数据,统计结果为0; 因为id_card字段为空的行记录, 阅读全文
posted @ 2019-06-05 11:29 Marydon 阅读(11153) 评论(0) 推荐(2) 编辑
摘要:1.情景展示 如何快速的判断出指定字符串中是否包含中文呢? 2.解决方案 通过length()和lengthb()函数的比对结果进行判断。 lengthb(string)计算string所占的字节长度:返回字符串的字节长度,单位是字节; length(string)计算string所占的字符长度:返 阅读全文
posted @ 2019-06-05 11:01 Marydon 阅读(4279) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 需要对id_card字段按字符长度进行分组统计并进行计数。 2.错误方式 第一步:统计出id_card字段共存在几种情况。 第一种方式:distinct 第二种方式:group by 第二步:分组计数 计数只能通过group by来实现。 问题就在于: 当id_card字段内容为空(n 阅读全文
posted @ 2019-06-05 10:27 Marydon 阅读(10597) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 判断某个字段的值,如果以APP开头,需查询APP表里对应的数据;如果是以JG开头,就查询机构对应的表。 2.原因分析 如果使用CASE WHEN THEN或者IF ELSIF 太麻烦,可以通过decode()函数实现哦。 语法说明: DECODE(VALUE,IF1,THEN1,IF2 阅读全文
posted @ 2019-03-22 17:50 Marydon 阅读(2018) 评论(0) 推荐(1) 编辑
摘要:1.情景展示 由上图可知,APPUSERID字段和VIRTUAL_CARDID字段存在一对多的关系,如何将重复的APPUSERID字段的数据查询出来呢? 2.原因分析 先查出重复的APPUSERID都有哪些,再根据重复的APPUSERID查询该条数据记录。 3.解决方案 第一步:查询重复的APPUS 阅读全文
posted @ 2019-01-09 17:07 Marydon 阅读(2746) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 本地可以直接连接2个不同的远程数据库; 两个数据库由于网络不通,无法建立DBLINK完成数据传输; 将A库中C表的数据插入到B库中C表,如何快速实现? 2.解决方案 通过kettle可以实现, 准备工作: kettle工具的下载及将对应的数据库所需的jar包拷贝至其lib目录下 具体操 阅读全文
posted @ 2018-12-07 16:31 Marydon 阅读(2688) 评论(0) 推荐(0) 编辑
摘要:1.情景展示 情景一: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景二: 删除VIRTUAL_CARD_TEST表中的脏数据 2.解决方案 情景一的解决方案: DELETE FROM PRIMARY_INDEX_TEST WHERE MINDEX_ID IS 阅读全文
posted @ 2018-12-05 18:19 Marydon 阅读(23218) 评论(0) 推荐(0) 编辑
摘要:前提:下面几种查询Oracle数据库版本号的方式,都是需要先连接到该数据库,才能查看。 方式一:通过SQL查询 select * from v$version 2022年2月15日11:21:42 方式二:使用plsql查询 点击弹出的这个界面或者按Esc键即可退出。 方式三:idea连接Oracl 阅读全文
posted @ 2018-12-05 09:45 Marydon 阅读(9870) 评论(0) 推荐(0) 编辑
摘要:方式一:使用管道符||进行拼接 方式二:使用concat()函数 区别: 方式一可以拼接多个字符串; 方式二只能将2个字符串拼接到一起,方式二可以嵌套使用:concat(concat('01',name),id)。 2021年11月2日14:37:34 拼接单引号 在orcale中,2个单引号相当于 阅读全文
posted @ 2018-12-05 09:34 Marydon 阅读(14718) 评论(0) 推荐(1) 编辑
摘要:1.情景展示 返回服务器的身份证号需要进行加密:只保留前四位和后四位,中间使用*代替,如何实现? 2.解决方案 第一步:查看该表的身份证号的长度有几种类型; 第二步:编写sql 错误方式: 长度为15的会被替换成''。 正确方式: --截取身份证号 SELECT DECODE(LENGTH(ID_C 阅读全文
posted @ 2018-12-04 16:33 Marydon 阅读(12622) 评论(2) 推荐(0) 编辑
摘要:1.情景展示 如何将表中的包含特殊字符的脏数据查出来? 2.instr()函数 语法: instr(string, substring[, start_position[, th_appearance]]) 参数说明: 第1个参数表示:必选项。将要被检索的字符串,可以是CHAR,VARCHAR2,N 阅读全文
posted @ 2018-12-04 16:19 Marydon 阅读(56163) 评论(0) 推荐(5) 编辑
摘要:1.情景展示 根据现有的表,建一个新的表,要求:新表的结构与原有表的表结构一模一样,如何快速实现? 根据现有的表,建一个新的表,要求:新表的结构、数据与原表一模一样,如何实现快速复制旧表? 2.解决方案 只复制表结构 语法: create table newTable as select * fro 阅读全文
posted @ 2018-11-23 17:20 Marydon 阅读(38974) 评论(0) 推荐(3) 编辑
摘要:1.情景展示 现在,需要清空该表数据 2.实现方式 为了比较删除速度,对该表进行复制 确认复制的表和原来的表数据是否一致 方式一:使用truncate table实现 方式二:使用delete from实现 执行结果 提交事务 3.区别 delete:会产生rollback,如果删除大数据量的表速度 阅读全文
posted @ 2018-11-23 16:46 Marydon 阅读(19084) 评论(3) 推荐(2) 编辑
摘要:1.情景展示 对VIRTUAL_QRCODELOG表的静态二维码,动态二维码,二维码总量按时间进行分组统计 表结构展示 存储过程入参展示 2.sql分析 要想完成这个sql需要将行转成列 第一步: 第二步:借助UNION ALL --按日期统计动态二维码 SELECT TO_CHAR(QR_CREA 阅读全文
posted @ 2018-09-04 12:56 Marydon 阅读(1720) 评论(0) 推荐(0) 编辑
摘要:1.声明变量的3种方式 按照数据类型的声明方式进行区分 方式一:直接声明数据类型 格式:变量名 数据类型(大小) V_START_DATE VARCHAR2(19); v_num number; 说明: 设置为字符串类型时,需要指定大小,否则报错; 变量的声明必须在"begin"关键字之前进行。 - 阅读全文
posted @ 2018-08-31 19:05 Marydon 阅读(46790) 评论(2) 推荐(9) 编辑
摘要:oracle 获取指定日期的第一天和最后一天 CreationTime--2018年8月21日17点56分 Author:Marydon 1.查询本月的第一天和最后一天 SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYY-MM-DD') "本月最后一天" FROM DUAL 阅读全文
posted @ 2018-08-21 18:20 Marydon 阅读(9001) 评论(0) 推荐(2) 编辑
摘要:oracle 存储过程 调用动态sql CreationTime--2018年8月16日11点25分 Author:Marydon 1.错误实现方式 --开始时间拼接' 00:00:00' V_SQL := 'select decode(length(' || V_END || '),10,' || 阅读全文
posted @ 2018-08-16 11:34 Marydon 阅读(11774) 评论(0) 推荐(0) 编辑