关系型数据库Oracle
主要是对oracle数据库相关知识的归纳总结,知识点及项目中的应用
墨笙弘一
这个作者很懒,什么都没留下…
展开
-
oracle instr函数
今天来分享一个oracle中的函数:instrinstr函数种类:instr函数系列有(instr,instrb,instrc,instr2,instr4),这些函数主要是使用字符来搜索一个字符串的子串,并且返回该字符串中指定的子串的字符第一次出现的位置。函数的不同之处在于它们如何确定要返回的子字符串的位置。instr:默认按照输入的字符集来计算使用的字符串的长度。instrb:使用字节来...原创 2019-03-12 14:46:05 · 8873 阅读 · 0 评论 -
Oracle中使sql求两个日期之间的所有日期
比如,两个日期是2018-08-27和2018-08-30,要求27,28, 29,30这四天的日期,我们可以采用下面的SQL来求得:--oracle 求两个日期之间的所有日期SELECT TO_CHAR((TO_DATE(KSRQ, 'yyyy-MM-dd') + (ROWNUM - 1)), 'yyyy-MM-dd') DT FROM DUALCONNECT BY ROWNUM...原创 2018-08-27 21:48:58 · 4725 阅读 · 0 评论 -
Oracle中表被锁住及解锁方法
在新项目中,有个新同事写的service,其中要对数据库进行update或者insert的操作时,他并 没有对该方法添加@Transactional(readOnly = false),此时插入数据保存的时候,就会出现表被锁住,因此需要解锁,其中还需要对表进行update或者insert的方法进行事务注解的添加。 当数据库表被锁住的时候,应该按照如下的步骤操作,来解锁表:--1、查看数据...原创 2018-07-12 14:42:16 · 46576 阅读 · 2 评论 -
oracle获取最新的一条记录
SELECT lybh,cfrq FROM ( SELECT lybh,cfrq,row_number() over(partition BY lybh ORDER BY cfrq DESC) rn FROM t_eb_cfjl WHERE cflx='3' AND del_flag=0) WHERE rn=1标题描述的可能有些不清楚,意思就是获取最近的一条记录,比如这个人...原创 2018-05-06 13:19:16 · 13908 阅读 · 0 评论 -
Oracle获取两个日期之间的所有日期(年-月)
前言:在外漂泊,还是身体为重,健康是第一,因为自己扁桃体反复化脓,做了手术,目前感觉恢复的差不多了,继续学习和分享。 今天分享的是,使用oracle来查询两个日期之间的所有日期,此处指的日期格式是YYYY-MM的形式。SELECT TO_CHAR(ADD_MONTHS(TO_DATE('2018-01', 'YYYY-MM'), ROWNUM - 1),'YYYY-MM') DAY_ID...原创 2018-05-06 12:13:59 · 11877 阅读 · 2 评论 -
Oracle CHR函数
这篇主要说一下这个函数CHR,字符函数,我在项目里常用到的是用这个函数进行换行,刚好有时间就去官网好好了解了一下这个函数的用法和含义,现在分享一下,大家共同学习。 1.CHR返回的字符在数据库字符集中具有与n相等的二进制值,如果您指定使用NCHAR_CS,则会返回国家字符集。 2.对于单字节字符集,如果n大于256,那么oracle数据库会返回n对256求余以后等效的二进制值。对于多字节字原创 2018-01-30 10:28:13 · 2897 阅读 · 0 评论 -
Oracle round函数
这篇文章主要说一下单行函数round(a,b)其中参数b是可以省略掉的,这个也是在写SQL的时候用到过,比如要对SQL计算的某个值进行四舍五入等都可以使用该函数。 1.第一个参数n代表的是你要操作的数字,我们需要对哪个值进行四舍五入,那么这个n对应的应该就是这个数字 2.第二个参数b是应该是一个integer类型,可以是正整数,也可以是负整数,也可以是0,但是当是0的时候我们一般会省略不写原创 2018-01-30 10:00:30 · 11637 阅读 · 0 评论 -
Oracle ceil函数
这篇文章主要说一下ceil函数,也是一个单行函数。 1.ceil函数的返回值是等于其参数n的一个整数或者说是大于参数n的最小整数 2.该函数以任何数字数据类型或任何可以隐式转换为数字数据类型的非数字数据类型作为参数。函数返回与参数的数字数据类型相同的数据类型。 3.具体的使用方法例子如下:原创 2018-01-30 09:44:43 · 26582 阅读 · 0 评论 -
Oracle abs函数
这篇文章主要说一下oralce中的单行函数abs(n) 1.abs函数返回值是n的绝对值或者说是n的相反数 2.该函数以任何数字数据类型或任何可以隐式转换为数字数据类型的非数字数据类型作为参数。函数返回与参数的数字数据类型相同的数据类型。 3.具体的使用方法如下面的例子所示原创 2018-01-30 09:39:43 · 31470 阅读 · 0 评论 -
Oracle换行
需求背景:要求从数据库查出来的数据按照格式输出到对应的界面域 格式如下: 学校:东风中学:三年级;。。。 医院:上海九院:李德明;。。。 开发技术:前端:miniui;后端spring mvc+mybatis 我的解决思路: 从数据库中按照要求将数据查出来,并且插数据的时候就对数据换行,然后让查找 出来的数据按照查找出来的格式直接显示到界面上。 用到的点: (1)Oracle中的换原创 2017-09-09 13:38:45 · 10811 阅读 · 0 评论 -
oracle产生连续的数字
在项目开发中,有个需求是mini-combobox的下拉框显示学年,是个固定的范围:2000-2099学年,原来的做法是直接调用字典,传值,现在就需要自己写一段SQL来实现,给下拉框一个url让自动加载: 主要写一个这段SQL:with t as(select rownum rn from dual connect by rownum<=3000 )select * from t where原创 2017-07-17 09:34:45 · 4408 阅读 · 0 评论 -
oracle nvl
NVL函数NVL(EXP1,EXP2) (1)NVL函数允许你在一个查询中使用一个字符串来替代null,如果EXP1是null,那么就会返回EXP2,如果EXP1非空,NVL就会返回EXP1 (2)参数EXP1,EXP2可以时任何数据类型,如果他们的数据类型不相同,则会: a.如果exp1是字符数据,oracle数据库将会在比较之前把exp2转为exp1的数据类型,最后会返回exp1的字符原创 2017-06-28 20:41:55 · 1642 阅读 · 0 评论 -
oracle decode函数
decode(exp,search,result,default); (1)decode函数会把exp与每一个search做比较,如果相等,则返回result,如果没有相等的,就返回default值,如果default不写,默认返回null (2)decode函数所实现的功能,case when exp then result else result2 end也是可以实现的 (3)我在项目原创 2017-06-28 20:09:38 · 430 阅读 · 0 评论 -
oracle mod函数
mod(m,n) (1)MOD返回m除以n的余数,如果n是0,返回m。 (2)这个函数以任何数字数据类型或任何非数值型数据类型为参数,可以隐式地转换为数字数据类型。 Oracle用最高的数字优先级来确定参数,隐式地将剩下的参数转换为该数据类型,并返回数据类型。原创 2017-06-28 20:11:32 · 65537 阅读 · 0 评论 -
oracle trunc
trunc(n,m) (1)可以传一个参数,也可以传两个参数,传一个参数n的时候,代表截取到数字的整数部分,不存在四舍五入;如果传了m,就需要截取到数字的m 位小数,如果小数位数小于m,则有多少截取多少。 (2)这个函数以任何数字数据类型或任何非数值型数据类型为参数,可以隐式地转换为数字数据类型。如果省略了m,那么函数将返回与参数的数值 类型相同的数据类型。如果包含m,则函数返回NUMB原创 2017-06-28 20:13:54 · 845 阅读 · 0 评论 -
oracle case表达式
CASE表达式 (1)CASE表达式可以让你可以在SQL中使用类似于if… then…else的逻辑而不需要调用程序 (2)一个简单的CASE表达式,Oracle将会搜索第一对when…then来与表达式做匹配,如果匹配了则返回表达式的值。如果没有任何一个when…then符合条件,将会执行 ELSE后面的语句,oracle将会返回else表达式的值。否则,oracle将会返回原创 2017-06-28 20:17:19 · 8360 阅读 · 0 评论 -
oracle replace
REPLACE函数 (1)REPLACE函数将会返回在原有字符中被搜索到的字符会被指定的替换字符所替换后字符。如果指定的替换字符被省略或者为null,所有出现的搜索字符就会被移除,如果 搜索字符是null,那么原来的字符就会被返回。 (2)对于搜索字符和替换字符,包括原来字符,可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或者NCLOB中的任何一个。只是字符的数原创 2017-06-28 20:31:09 · 553 阅读 · 0 评论 -
oracle length
LENGTH函数 (1)LENGTH函数返回字符的长度。LENGTH计算定义的字符的长度。LENGTHB使用字节来计算。LENGTHC使用unicode来计算,LENGTH2使用UCS2编码来计算,LENGTH4使用UCS4 来计算 (2)字符可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或者NCLOB中的任何一个。返回值的数据类型是NUMBER类型,如果一个字原创 2017-06-28 20:29:31 · 11646 阅读 · 0 评论 -
Oracle杀死一直在执行且不停的存储
今天跑了一段存储,遇到一个问题,第一次遇到,执行了下面的SQL:BEGIN P_C12_SCJJDXSC_WZMT;END;然后发现一直在execute,等了好长时间也没有stop,老员工说存储一直在执行,可能死循环,需要kill procedure.然后我查询了一下,最后发现下面这个方法好使: 第一步:select * from v$db_object_cache where loc原创 2017-06-05 17:42:40 · 4751 阅读 · 2 评论 -
Oracle中保留两位小数
在最近的项目开发中,有个业务需求是界面显示的数字需要保留两位小数,目前我想到的解决方法有两种: (1)在写SQL的时候,直接保留两位小数 (2)在java代码里面将查询出来的数进行格式化处理,保留两位小数 先说第一种方案:在SQL中的处理 我使用的oracle数据库,所以有3个函数可以选择,分别是: (1)ROUND(A/B,2) ROUND()函数是会将计算结果进行四舍五入的,如果所需原创 2017-06-02 08:23:47 · 225867 阅读 · 11 评论 -
Oracle MONTHS_BETWEEN
MONTHS_BETWEEN函数会返回日期类型的date1和date2之间的相差的月份。 (1)如果date1晚于date2,返回的结果就是正数。 SELECT MONTHS_BETWEEN(TO_DATE('2017-05-19', 'YYYY-MM-DD'), TO_DATE('2017-03-23', 'YYYY-MM-DD')) MONTHS原创 2017-05-19 11:49:39 · 4705 阅读 · 0 评论 -
Oracle中的select
1.子查询分两种 (1)单行子查询:对外部的SQL要么不返回结果,要么只返回一行。单行子查询的一种特殊情况就是正好包含一列(标量子查询) (2)多行子查询:向外部的SQL语句返回一行或多行 (3)多列子查询:向外部的SQL语句返回多列 (4)关联子查询:引用外部SQL中的一列或者多列,因为他们通过相同的列与外部的SQL进行关联,所以叫关联子查询 (5)嵌套子查询:位于另外一个子查询中 2原创 2016-11-19 16:38:08 · 993 阅读 · 0 评论 -
Oracle中的时间和日期处理
1.在oracle中存储日期和时间是用Date类型 2.to_char()将时间值转为字符串 (1)to_char(x[,format]):用于将时间值x转换为字符串,其中format是可以用来规定x的时间格式 (2)年月日时分秒:yyyy-mm-dd hh24:mi:ss 3.to_date()将字符串转为时间值 (1)to_date(x[,format]]):将字符串x转换为时间值,可原创 2016-11-19 15:20:42 · 5308 阅读 · 0 评论 -
Oracle聚合函数
1.聚合函数 聚合函数就是同时对一组进行操作,对每组行返回一行输出结果,这就是与单行函数的不同,聚合函数有时候也可以叫分组函数 2.常用的聚合函数 (1)avg(x):返回x的平均值 (2)count(x):返回一个包含x的查询返回的行数 (3)max(x):返回x的最大值 (4)min(x):返回x的最小值 (5)median(x):返回x的中间值 (6)stddev(x):返回x原创 2016-11-19 13:15:41 · 8405 阅读 · 0 评论 -
oracle单行函数(2)
(1)ltrim(),rtrim(),trim() ltrim(x[,trim_string]):从x的左边截去一些字符,可以指定要截去的字符串trim_string,如果没有指定,默认截去空格 rtrim(x[,trim_string]):从x的右边截去一些字符,可以指定要截去的字符串trim_string,如果没有指定,默认截去空格 trim([trim_char from] x):从x的原创 2016-11-13 15:04:46 · 489 阅读 · 0 评论 -
oracle单行函数
在SQL中除了CRUD操作,里面还会用到许多的oracle函数,总结一下我用过的oracle单行函数和看书学到的新的单行函数 1.单行函数 (1)定义:单行函数一次只能对一行进行操作,且对输入的每一行返回一行输出结果 2.单行函数分类 大概有五种单行函数: (1)字符函数:对由字符组成的字符串进行操作 (2)数值函数:对数字进行计算 (3)转换函数:将值从数据库中的一种类型转换成另外一原创 2016-11-12 16:48:07 · 969 阅读 · 0 评论 -
oracle中的连接
主要说一下oracle中的连接条件和连接类型 1.连接条件 (1)等值连接:在连接中使用等于操作符。 (2)不等连接:在连接中除了使用等于操作符还有其他的操作符。 2.连接类型 (1)内连接:也叫inner join,只有当连接中的列包含满足连接条件的值才会返回一行 (2)外连接:也叫outer join,即使连接条件中的一列包含空值也会返回一行;可以在连接条件中使用外连接操作符来执行外原创 2016-11-12 13:57:20 · 590 阅读 · 0 评论 -
oracle中给表和列起别名
1.oracle中给表起别名 有时候在一个select中会有多个表,而且表的名字挺长,如果要做关联表的时候,你需要用表名.字段名的方式做链接,这样比较不方便,此时我们可以给这张表起一个别名,此时就可以使用该别名代替表名来使用,比如下面这个例子SELECT xxmc,sname as xsxm,sex,phone,address jzdz FROM student sLEFT JOIN xxjb原创 2016-11-12 12:51:13 · 43849 阅读 · 0 评论 -
ORACLE中排序ORDER BY
排序,有时候需要对查询的结果集进行排序,这个时候就需要使用ORDER BY关键字,按照什么来排序,根据要求排序就可以 (1)使用ORDER BY+排序字段对查询的结果集进行排序 (2)ORDER BY可以指定一列,多列或者表达式等 (3)ORDER BY子句必须在FROM或者WHERE子句的后面 (4)ORDER BY默认是升序(正序)排序,从小到大排序(关键字是ASC),其实也可以指定按照原创 2016-10-21 21:08:02 · 7081 阅读 · 0 评论 -
ORACLE逻辑操作符
1.ORACLE中的逻辑操作符可以根据逻辑条件来限定行。 (1)x AND y:当x和y都为true时,才会返回true (2)x OR y:当x和y中有一个为true时,就会返回true (3)NOT x:如果x为false,就会返回true,如果x为true,就会返回false 2.ORACLE中逻辑操作符的优先级问题 如果在同一个表达式中同时使用AND和OR,那么AND的优先级会高于原创 2016-10-21 21:00:17 · 1414 阅读 · 0 评论 -
ORACLE中的SQL操作符
SQL操作符可以对字符串或者值列表,值范围以及空值进行模式匹配,进而来限定查询返回的行 (1)LIKE:匹配字符串中的模式下划线(_):匹配指定位置的一个字符百分号(%):匹配从指定位置开始的任意多个字符比如:SELECT NAME FROM STUDEN WHERE NAME LIKE'%三'--表示从STUDENT表中查找姓名最后一个汉字是三的学生姓名,在三之前可以有任意多的字符SELE原创 2016-10-21 20:45:10 · 604 阅读 · 0 评论 -
ORACLE中的比较运算符
在ORALCE中有以下9中比较运算符; (1)等于= 可以用在where条件后面,比如: (2)不等于<> 或者!= (3)大于> (4)小于< (5)大于或等于>= (6)小于或等于<= (7)ANY 使用ANY将一个值与某个列表中的任何值进行比较,此时必须在ANY之前添加一个(1)-(6)比较运算符中的一个SELECT customers WHERE custome原创 2016-10-21 20:17:56 · 31250 阅读 · 2 评论 -
ORACLE中区分空值和空字符串
(1)首先明白空值和空字符串是两个概念 (2)可以使用ORACLE内置函数NVL()来区分空值和空字符串,NVL()函数可以将空值转为另外一个值,NVL()函数需要接收两个参数:列和值,如果第一个为空值,就将其替换为第二个参数的值。NVL()函数除了可以转换包含的空值字符串外,还可以转换空的数字列和日期列原创 2016-10-19 21:21:14 · 7126 阅读 · 0 评论 -
Oracle之SELECT语句
1.SELECT语句select * from t_c11_dxmb;(1)SELECT关键字后面需要跟要查询的列名,如果要查询该表中的所有列,可以使用*来代替所有的列名,然后跟着FROM关键字,FROM关键字后面紧跟着要查找字段所在的表的表名,最后用分号;来结束该条SQL语句。 (2)数据库返回的所有行叫做结果集result set (3)oracle数据库将列名全部转化为大写形式 (4)字原创 2016-10-16 17:26:01 · 16862 阅读 · 0 评论 -
oracle中某个字段列的值全部默认为0
昨天有个同事想让某张表中的一个字段里面值为0,不显示null或者空,我的解决方法:decode(phone,'',0)这段代码的意思是:如果字段phone的值为”,就把phone的值设置为0,这个需要自己了解oracle里面的decode函数的用法,如果了解这个,这个问题应该可以解决原创 2016-10-19 12:39:02 · 9100 阅读 · 0 评论 -
Oracle数据库常用的数据类型
主要介绍一下oralce数据库中常用的数据类型,以后有时间可以再补充其他的数据类型,下面列举的是经常可以见到使用到的数据类型: (1)CHAR(length) 用来存储固定长度的字符串,length参数指定字符串的长度,如果存储的字符串长度小于该参数length的长度,那么就会在末尾填充空格进行补满。 (2)VARCHAR2(length):这个应该是最常见的一种数据类型了吧,因为比较灵活,所原创 2016-10-16 16:28:02 · 3949 阅读 · 0 评论 -
oracle中获取年月日时分秒
我写sql的时间为2016年10月10日下午15:18完事,这个时间下面要做对比:--获取年select to_char(sysdate,'yyyy') from dual--2016select to_char(sysdate,'YYYY') from dual--2016--获取月select to_char(sysdate,'mm') from dual--10select to_c原创 2016-10-10 15:24:26 · 34566 阅读 · 0 评论 -
Oracle 10g字符集问题
1.出现的问题:我的电脑没有安装oracle10g服务端,安装了oracle10g的客户端,然后有一个免安装版的PL/SQL,利用sqlplus时,可以正常登录,不会出现客户端和数据库字符集不一致的问题,当我使用PL/SQL首次登录时,出现了数据库与客户端字符集不一致的情况,提示信息如下图所示: 2.解决方案: 在google上面搜了一下,基本上所有的answer都是:开始-运行-reged原创 2016-07-26 05:03:58 · 1189 阅读 · 1 评论