
oracle
ohoy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
日期、数字及字符的互转
概述日期转字符用TO_CHAR(),SELECT SYSDATE 当前系统时间,TO_CHAR(SYSDATE,'yyyy-MM-dd') 格式化日期FROM dual字符转日期SELECT SYSDATE 当前系统时间,TO_DATE('2020-10-11','yyyy-MM-dd') 格式化日期FROM dual原创 2020-12-02 10:43:54 · 278 阅读 · 0 评论 -
使用GROUP BY后NVL(SUM(a),b)失效
有个奇怪的现象,当值为NULL时,NVL本来是可以将值置0的,但是使用了GROUP BY之后,就不可以了,我也不知道为啥,但是去掉之后就正常了原创 2020-12-25 16:20:22 · 1428 阅读 · 4 评论 -
ORA-00920: 无效的关系运算符
多了个字段,去掉就行原创 2020-12-23 16:00:14 · 24706 阅读 · 0 评论 -
Oracle数据库中ORA-01861: 文字与格式字符串不匹配
WHERE CREATE_DATE BETWEEN TO_DATE(#{startTime},'yyyy-MM-dd') AND TO_DATE(#{endTime}, 'yyyy-MM-dd')在NAVICAT中可以使用如上SQL查数据,但在Mybatis Plus中是不可以的,必须要用TO_CHAR转一道,然后回报文字与格式字符串不匹配错误WHERE CREATE_DATE BETWEEN TO_DATE(TO_CHAR(#{startTime}, 'yyyy-MM-dd'),'yyyy-MM-原创 2020-12-21 11:11:08 · 961 阅读 · 1 评论 -
ORACLE按月、年查询统计数据
概述类似做这样统计数据,可以把支出、收入、其他及其子类都设计在数据库中,这样查数据的时候,直接从数据库中查就可以了类似这样代码 @Override public FundStatisticSixMonthData sixMonthTotalMethod2(FundDetailFrondPram fundDetailFrondPram) { LocalDate endDate = fundDetailFrondPram.getFrontAcct(); L原创 2020-12-13 21:10:33 · 3010 阅读 · 0 评论 -
ORACLE中DISCTINCT作用于多个字段
DISTINCT作用于多个字段,则会把这几个字段的所用不同组合全部列出来原创 2020-12-16 13:23:13 · 967 阅读 · 0 评论 -
ORACLE 千万条的数据优化
概述需要是这样的,在一张有一千万条数据的表里,时间类型为yyyy-MM-dd HH:mm:ss,需要按月或者年对数据进行统计,功能写出来后查询了一下数据发现太慢了,,结合一个案例简单讲一下,架构用的是Mybatis Plusdemo开始的返回数据是这样的,但是它的时间达到了3秒,有时候到8秒,这也太慢了想到了再Mybatis Plus中注入数据的时候,可能要对很多无关的字段进行检测,那么是否可以把无关字段去掉一下?尝试一下可以,时间为1秒,没有问题,期间有尝试过用在时间字段上加索引,但是时间原创 2020-12-15 11:30:23 · 3114 阅读 · 0 评论 -
ORACLE生成yyyyMMdd格式的随机日期
SQL首先通过,TO_DATE、TO_CHAR、TO_NUMBER函数将日期转换为开始时间数字SELECTto_number(to_char(to_date('20200101','yyyymmdd'),'J'))FROM DUAL然后通过TRUNC和DBMS_RANDOM得到随机日期,再通过TO_DATE转换为日期,最后使用TO_CHAR进行格式化就可以了,就可以得到随机的日期了SELECT TO_CHAR(TO_DATE(2458850 + TRUNC(DBMS_RANDOM.VALU原创 2020-12-13 15:51:17 · 1166 阅读 · 0 评论 -
ORACLE建立执行计划、查看执行计划
--对xxx句子使用执行计划EXPLAIN PLAN FOR SELECT * FROM EXPENDWHERE ACCT BETWEEN TO_DATE('2020-10-01', 'yyyy-MM-dd') AND TO_DATE('2020-12-31', 'yyyy-MM-dd')--查看执行计划SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY)原创 2020-12-11 17:12:46 · 229 阅读 · 0 评论 -
使用存储过程批量制造数据,模拟大数据量下的ORACL执行情况
概述在程序场景中,很少有机会去接触到大数据量的情况,此时可以借助,存储过程和存储函数在数据库中执行大量的数据,模拟大数据情况,在借助JMETER和模拟大并发,大数据下的程序性能。案例存储过程需要完成这样的几个事,EXPENSES_TYPE要是随机量1或2,当EXPENSES_TYPE=1时EXPENSES_NAME要是转账,当EXPENSES_TYPE=2时EXPENSES_NAME要是红包,EXPENSES_AMOUNT要是随机金额,ACCT要是2020年的任意时间前三个可以通过dbms_ra原创 2020-12-11 10:46:04 · 380 阅读 · 0 评论 -
ORACLE报无效数字
问题在Mybatis中运行没有问题,将SQL放在navicat控制台中就报错, SELECT EXPENSES_NAME,EXPENSES_AMOUNT,ACCT FROM EXPEND WHERE EXPENSES_TYPE='1' AND TO_CHAR(ACCT,'yyyy-MM')=TO_CHAR('2020-12-03','yyyy-MM') ORDER BY EXPENSES_AMOUNT DESC解决原因是,2020-12-03在Mybatis中传如的是日期类型,那么,所以用T原创 2020-12-10 14:36:43 · 4185 阅读 · 0 评论 -
ORACLE未按要求找到FROM关键字
如果有子查询的话,检查一下,是否是外层查询的末尾是否多写了,号,如果多写了,号的话是会报ORACLE未按要求找到FROM关键字错误的原创 2020-11-27 15:15:09 · 785 阅读 · 0 评论 -
子查询及LEFT JOIN的组合使用
概述我们有几张表,EMP(员工表)DEPT(部门表)EMP_BOUNDS(员工奖金表)我们需要完成这样一个事情,找出同时在在EMP(员工表),DEPT(部门表)中的员工信息,员工编号,员工名字,部门编号,部门所在地,在EMP_BOUNDS(员工奖金表)表中,找出员工获得奖金的日期,如下图SQLselect a.ename,a.EMPNO,a.deptno,a.loc,b.RECEIVEDFROM(select e.ename,e.EMPNO, e.deptno,d.locfro原创 2020-11-27 14:43:50 · 18638 阅读 · 1 评论 -
ORACLE中查询出存在表A而不存在于表B中的数据
概述有这样一个需求,我们需要从ORACLE中查询查询出存在表A而不存在于表B中的数据,完成这个需求的方案有很多种,我们一个一个看基于MINUS取差集的解决方案我们知道,ORACLE中表A MINUS 表B 是指指筛选出存在于 表A 而不存在于 表B的数据,那么select EMPNO from empminusselect EMPNO from dept就可以筛选出存在于表emp 而不存在于表dept 种的EMPNO了,再使用一个IN就可以查出所有的数据了完整SQL如下:SELECT原创 2020-11-25 15:53:28 · 10553 阅读 · 0 评论 -
ORACLE 子查询的写法
概述在项目中,一些复杂的查询都会用到子查询来查数据,对于刚开始起步写复杂SQL的话,可能会有点力不从心,如果子查询在嵌套NOT EXISTS的话,可能会觉得有点力不从心,那么根据一个案例来了解一下子查询的大体写法把demo表中数据创建视图create view Vasselect * from emp where deptno != 3 union allselect * from emp where ename = 'WARD'select * from V视图中数据我们可原创 2020-11-25 11:29:37 · 1070 阅读 · 0 评论 -
ORACLE报标识符无效
解决当ORACLE报ORA-00904: “DEPTNO”: 标识符无效时,看看字段名是不是写错了,或者是需要根据业务需要新增的列,但是表中没有新增,也会报标识符无效错误,可以看看表中是否没有这一列,没有的话加上就好了,还有就是在子查询中,内层查询没有SELECT出来,而外层查询使用了,也会报标识符无效错误...原创 2020-11-25 14:50:30 · 687 阅读 · 0 评论 -
Oracle按天查询数据,并将填充数据为0
概述在观看类别中有三类,手机、电脑、电视,有这样一个需求,要求按天统计出每个类别的观看数、订单数,如果当天没有数据,将三个类别的当天数据置为0,如果当天有数据,比如只有电脑这个类别的数据,则要求将手机、电视数据置0,补全。sql在对日期数据补全的操作上,通常有两种做法,一种是在java端补,另一种是用sql在数据库端补,一般要是能在数据库端补,进尽量在数据库端补,在java端补的话一个是麻烦,另一个是需要使用到各种循环,有点影响性能。先来看sql怎么写吧,拿到需求后,第一个反应是,我需要做两个动作原创 2020-11-22 19:21:21 · 1328 阅读 · 0 评论 -
Oracle常用函数知识及案例
概述Oracle中对一些复杂的案例经常会用到SUM、AVG、COUNT、DECODE、CASE THEN进行组合使用,文章对这个函数做一个总结,对某些问题给出参考解决方法DEMOCASE THEN函数,给个例子把SELECTDATA_TYPE,DATA_SUB_TYPE,CASE WHEN TEST_NUMBER1 IS NOT NULL THEN TEST_NUMBER1 WHEN TEST_NUMBER2 IS NOT NULL THEN TEST_NUMBER2 ELSE原创 2020-11-03 16:27:46 · 121 阅读 · 0 评论 -
oracle 12c下载地址
oracle下载地址https://www.oracle.com/database/technologies/database12c-win64-downloads.html原创 2020-11-02 10:37:18 · 6332 阅读 · 5 评论 -
在oracle中动态拼接order by报无效索引列
概述有这样一个需求,在某个模块中,有多个tab需要按不同的字段进行排序,这样的话,前端就可以给你一个1,2,3,4的标识,你通过这个标识,来拼接需要排序的字段名,而后在mybatis中动态拼接这个字段名就可以了,但是需要注意一个问题,拼接的时候,不能用#{}拼接,必须得用${}拼接,否则会报报无效索引列错误,有人说会有SQL注入的风险,我想了一下,如果是你的拼接是在后端完成的,不是用前端的数据进行拼的SQL那么也就不存在SQL注入风险了。demojava代码public Result findDa原创 2020-10-27 20:42:35 · 859 阅读 · 0 评论 -
Oracle缺失表达式及用to_char、to_date的时候,报无效数字错误解决
概述一般是不小心会出现的问题错误解决在oracle中,有时候会遇到缺失表达式的错误,检查一下是不是,逗号多加了、逗号写错位置了或者字段少写了,这些都是会引起表达式错误在用mybatis写时间查询的时候,需要使用to_date(to_char(#{startTime},'yyyy-MM-dd hh24:mi:ss'),'yyyy-MM-dd hh24:mi:ss'),进行时间查询,否则mybatis会报错,但是如果在navicat中做数据库在对时间进行查询的时候,使用to_date(to_c原创 2020-10-21 15:38:01 · 8538 阅读 · 0 评论 -
对group by多字段查询进行一个探究及group by不是表达式解决方案
概述在做数据统计的时候,经常会用到group by,有时候,还会涉及到对满足条件的多个字段进行分组,在多个字段分组的时候,它是怎么分的呐?我们做个探究demo来看数据那么,我按两个字段查询,如果,第一个不同,是按第二个查呐?如果第一个不同,按第二个查的话,那么大米和魅族应该是一组,那么计数的时候,应该为2以group by id,deleted为例SELECT MAX(id),COUNT(*)FROM `tb_brand`WHERE id BETWEEN 1 AND 9GROUP原创 2020-10-20 20:55:13 · 1626 阅读 · 0 评论 -
Oracle中模糊查询concat和like的选择
概述在程序中经常会使用到模糊查询,而模糊查询的写法有很多比如使用CONCAT(’%’,#{search_name})进行或者使用%’+#{search_name}+’%'进行,那么这两种写法区别在哪里呐?在选择的时候该如何选择demo我们来测试一下SELECT CONCAT('%','成功')FROM a看一下结果%成功%成功%成功%成功%成功SELECT CONCAT('成功','%')FROM a成功%成功%成功%成功%成功%成功%说明一下,要测试某个函数的功原创 2020-10-13 15:45:51 · 4053 阅读 · 0 评论 -
maven导入oracle包详解
概述oracle包由于授权问题暂且不可以直接从maven中下载下来,首先需要下载oracle jar包,然后导入使用maven命令将jar包交给maven管理,然后才能导入。解决首先下载jar包,已经给你们提供好了https://wws.lanzous.com/iT9I1ha8c3a再则运行mvn命令,mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1.0.2 -Dpackaging=j原创 2020-10-09 11:01:41 · 2645 阅读 · 0 评论 -
使用mybatis往Oracle中写入数据报列无效111,表或视图不存在
概述使用mybatis往oracle中写入数据的时候,报了两个错误,首先是报Error setting null for parameter #X with JdbcType OTHER .无效的列类型,错误。第二个是报表或视图不存在解决第一个问题中检查你的mapper.xml文件中insert方法是否有jdbcType属性,如果没有的话需要加上。insert into tb_name(id,name) values(#{id,jdbcType=VARCHAR},#{name,jdbcType})原创 2020-09-29 16:23:09 · 1508 阅读 · 0 评论 -
Oracle主键自增实现
概述在Oracle中使没有主键自增的,要实现主键的自增,需要通过序列来实现。案例以springboot为环境建表、建序列需要注意的是,在Id需要为number类型--创建表,表名以及字段名都要大写CREATE TABLE "TB_USER" ("ID" NUMBER(20) VISIBLE NOT NULL ,"USER_NAME" VARCHAR2(255 BYTE) VISIBLE ,"PASSWORD" VARCHAR2(255 BYTE) VISIBLE ,"NAME" VARCH原创 2020-08-21 14:56:55 · 1685 阅读 · 0 评论