Oracle
zzdrfd
这个作者很懒,什么都没留下…
展开
-
Oracle查询优化改写_1
对应的第一章”单表查询“1.将空值转换为实际值和nvl函数相比,coalesce函数更好用,后者支持多个参数。COALESCE语法:COALESCE(exp1,exp2,exp3,...)功能:9i新增,依次查找各参数,遇到非NULL则返回,各参数或表达式数据类型必须一致,如果都为null则返回null如果nvl要实现相同的功能,则需要嵌套多层。sele...原创 2018-07-12 16:58:02 · 270 阅读 · 0 评论 -
ORA-01789: 查询块具有不正确的结果列数
出现这个bug的原因是:在用一个或多个UNION 合并结果集的时候,某个结果集的字段个数或字段名称或字段顺序,和其他的结果集不匹配。原创 2018-11-30 17:39:50 · 1224 阅读 · 0 评论 -
ORA-00923: FROM keyword not found where expected
报错原因:在查询的时候,字段别名取名为 工资/奖金。在SQL中,使用包含中文和特殊字符的别名时,需要使用双引号包裹别名,即书写方式为:“工资/奖金”。...原创 2018-11-30 17:44:23 · 2552 阅读 · 0 评论 -
ORA-01830: 日期格式图片在转换整个输入字符串之前结束
在程序中查询数据的时候,报错。原因:程序中,TO_DATE(‘2018-12-15 14:00:00’,‘yyyy-MM-dd’)转换日期格式不匹配。改为TO_DATE(‘2018-12-15 14:00:00’,‘yyyy-MM-dd hh24:mi:ss’)即可。...原创 2018-12-15 14:57:44 · 733 阅读 · 0 评论 -
OVER(PARTITION BY)高级查询
--基础数据DROP TABLE "ZYH_TEST";CREATE TABLE "ZYH_TEST" ( "ID" NUMBER(19) NOT NULL , "NAME" VARCHAR2(255 BYTE) , "CREATETIME" DATE , "SCORE" NUMBER , "CLASSID" VARCHAR2(255 BYTE)原创 2019-01-14 18:21:32 · 3993 阅读 · 1 评论 -
listagg()行转列函数
--基础数据DROP TABLE "ZYH_TEST";CREATE TABLE "ZYH_TEST" ( "ID" NUMBER(19) NOT NULL , "NAME" VARCHAR2(255 BYTE) , "CREATETIME" DATE , "SCORE" NUMBER , "CLASSID" VARCHAR2(255 BYTE)原创 2019-01-15 15:52:33 · 2651 阅读 · 0 评论 -
USER_TAB_COLS,USER_TAB_COLUMNS,ALL_TAB_COLS,ALL_TAB_COLUMNS获取数据库元素的区别
参考: ALL_TAB_COLS,ALL_TAB_COLUMNS1,相同点和区别这几个视图,都可以用于获取数据库中的表,视图,Clusters中的数据。区别:1)_TAB_COLS和_TAB_COLUMNS区别在于,*_TAB_COLS中包含隐藏的列。【HIDDEN_COLUMN,VIRTUAL_COLUMN,SEGMENT_COLUMN_ID,INTERNAL_COLUMN_ID,QU...原创 2019-01-22 14:53:39 · 4354 阅读 · 0 评论 -
【异常】EmptyResultDataAccessException:Incorrect result size: expected 1,actual 0
在使用JdbcTemplate的queryForMap方法,查询数据库时报错。原因:查看源码:"JdbcTemplate"类public Map<String, Object> queryForMap(String sql, Object[] args, int[] argTypes) throws DataAccessException { return queryForO...原创 2019-07-08 13:59:17 · 8561 阅读 · 1 评论 -
Oracle error:ORA-01704: string literal too long
使用Oracle在更新某个字段的时候,报错ORA-01704: string literal too long。解决办法:1,首先查看该字段的类型,确定字段类型是CLOB(4000),而不是VARCHAR2。2,此时是在不行,就只能分两次更新该字段了。UPDATE table1 SET column_a = 'abcdefghijklmnopqrstuvwxyz' where column...原创 2018-11-27 10:56:21 · 7279 阅读 · 0 评论 -
ORACLE分析函数
1,rollup函数select class 班级, subject 科目, sex 性别,sum(score) 总分数 from sailing_class group by rollup(class,subject,sex) order by class,subject,sex;解释:sum(汇总字段) group by rollup(字段A,字段B,字段C)该函数会先对(...原创 2018-11-14 18:14:38 · 5444 阅读 · 0 评论 -
Oracle数据库ORA-00911: 无效字符 问题和解决
SSH项目中,使用自定义sql查询数据时报错。报错的原因是:在自己的自定义SQL末尾,多了一个分号 ;,把这个 分号; 干掉即可。原创 2018-10-19 11:50:27 · 16220 阅读 · 0 评论 -
Oracle查询优化改写_2
对应的第二章”给查询结果排序“1.按指定列排序select ename,comm from emp order by comm ASC;select ename,comm from emp order by 2 ASC;--按照第二列排序2.TRANSLATE函数语法: TRANSLATE(string,from_str,to_str)功能:...原创 2018-07-12 16:59:54 · 333 阅读 · 0 评论 -
left join on的条件与where中的条件
联查表时,联查条件既可以放在 ON 之后,也可以放在 WHERE 之后,两者有什么区别呢?原创 2018-07-24 16:13:37 · 1374 阅读 · 0 评论 -
Oracle查询优化改写_3
对应的第三章”操作多个表“1.UNION ALL与空字符串UNION ALL 常常用来合并多个结果集。select ename AS 名称 from emp where empno = 7788 UNION ALLselect null AS 名称 from dualUNION ALL select '' AS 名称 from dual;得到的结果如下:...原创 2018-07-26 17:07:54 · 491 阅读 · 0 评论 -
Oracle 函数大全
转载自:https://www.cnblogs.com/bbliutao/archive/2017/11/08/7804263.htmlF.1字符函数——返回字符值(chr,concat,initcap,lower,lpad/rpad,nls_initcap,nls_lower,nls_upper,regexp_replace,regexp_substr,replace,tri...转载 2018-07-27 10:02:49 · 1663 阅读 · 0 评论 -
MERGE INTO语法
MERGE INTO该语法支持 Oracle和Sql server,不支持Mysql基本语法为:MERGE INTO table_name A USING (table|view|query_sql) BON (A.col = B.col) WHEN MATCHED THEN UPDATE SET A.col1 = B.col_val1 WHEN NOT MATCHE...原创 2018-07-31 16:18:17 · 2271 阅读 · 3 评论 -
Oracle查询优化改写_4
对应的第四章”插入,更新与删除“1.阻止对某几列插入向数据库某张表【包含字段A,B,C,D】中插入数据时,这张表内的一个或多个字段【D】不允许手动录入。此时,可以建立一个不包含“D”字段的VIEW,新增数据时通过这个VIEW插入即可。creat table TEST (A vachar2(20) default '默认1',B vachar2(20) default '默认...原创 2018-08-01 16:40:51 · 338 阅读 · 0 评论 -
Oracle中的Sequence
Sequence是数据库系统按照一定的规则自动增加的数字序列,主要用于生成数据库数据记录。这个序列一般作为代理主键(因为不会重复)。新建Sequence:-- create sequence create sequence SEQ_sailingTest minvalue 1 maxvalue 99999...原创 2018-10-11 17:52:00 · 5817 阅读 · 0 评论 -
Oracle中获取Date类型数据,没有时分秒
oralce数据库中,获取Date类型数据,发现数据的格式为:“yyyy-mm-dd”,而不是“yyyy-mm-dd hh24:mi:ss”1,使用JDBC从oracle数据库中取Date类型数据,当使用getDate(“字段名”)方法取值时,只能获取到日期,而无法获取时间,当我们想要获取完整时间的时候,需要使用getTimestamp(“字段名”)方法来取值。2,Timestamp类型...原创 2018-10-19 11:46:46 · 8996 阅读 · 0 评论 -
使用B表操作A表数据
1,使用B表更新A表--该sql尽量不要使用,推荐使用下面的sqlUPDATE 表A SET A.字段1 = (SELECT B.字段1 FROM B表 WHERE A.字段2 = B.字段2);该sql会使用B表中的数据来更新A表,如果A表中存在B表中不存在的数据,那么此时这个数据会被更新为null。避免这种情况出现,现修改sql为如下:UPDATE 表A SET A.字段1 = (...原创 2019-06-24 17:44:21 · 500 阅读 · 0 评论