Oracle常用函数及使用案例(珍藏版)

  • 格式:doc
  • 大小:35.00 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle常用函数及使用案例(珍藏版)

一:sql函数:

lower(char):将字符串转化为小写的格式。

upper(char):将字符串转化为大写的格式。

length(char):返回字符串的长度。

substr(char,m,n):取字符串的字串。

案例1.将所有员工的名字按小写的方式显示

select lower(ename),sal from emp;

案例2.将所有员工的名字按大写的方式显示。

select upper(ename),sal from emp;

案例3.显示正好为五个字符的的员工的姓名。

select * from emp where length(ename)=5;

案例4.显示所有员工姓名的前三个字符。

select substr(ename,1,3) from emp;//从名字的第一个字符开始取,向后取三个字符。

案例5.以首字母为大写的方式显示所有员工的姓名。

(1)首字母大写:select upper(substr(ename,1,1)) from emp;

(2)完成后面字母小写。select lower(substr(ename,2,length(ename)-1)) from emp;

(3)合并select upper(substr(ename,1,1))||lower(substr(ename,2,length(ename)-1)) from emp;

案例6.以首字母为小写的方式显示所有员工的姓名。(需要有较高的灵活度,细心分析和清晰思路)

(1)首字母小写:select upper(substr(ename,1,1)) from emp;

(2)完成后面字母大写。select lower(substr(ename,2,length(ename)-1)) from emp;

(3)合并select lower(substr(ename,1,1))||upper(substr(ename,2,length(ename)-1)) from emp;

案例7.函数(替换):replace(char1,search_string,replace_string);

显示所有员工的姓名,用“我要替换A”替代所有“A”。

select replace(ename,'A','我是老鼠')from emp;

案例8.以首字母为小写的方式显示所有员工的姓名。

select replace(ename,substr(ename,1,1),lower(substr(ename,1,1)))from emp;

案例9.以首字母为大写的方式显示所有员工的姓名。

Select

replace(ename,substr(ename,2,length(ename)-1),lower(substr(ename,2,length(ename) -1)))from emp;

二:数学函数:(在财务中用的比较多)

ronud(sal)用于四舍五默认取整;

ronud(sal,1)用于四舍五留一位小数。

trunc(sal)取整,忽略小数。截去小数部分。

trunc(sal,1)截取;小数点留一位,之后的右边的省去。

trunc(sal,-1)截取;只留整数,个位数取零。

floor(sal)向下最接近取整;比如1.1值为1.

ceil(sal)向上最接近取整。比如1.1值为2.

做oracle测试时可以用dual表;

mod(m,n)取模即取余。// mod(10,2)=0;

select mod(10,2) from dual;

显示在一个月为30天的情况下所有员工的日薪金,忽略余数。

select trunc(sal/30)from emp;

select floor(sal/30)from emp;

返回绝对值:

select abs(-13) from dual;

power(m,n)m的n次幂。

三:日期函数:

日期函数用来处理date类型的数据。

默认情况下日期格式时dd-mon-yy,即12-7月-78

sysdate该函数返回系统时间。

select sysdate from dual;

add_months(d,n),再原有的时间上增加月份。

last_day(d),返回指定日期所在月份的最后一天。

案例1:查找已经入职八个月多的员工

select * from emp where sysdate>add_months(hiredate,8);

系统时间大于雇用时间再加上八个月的时间。那就是要八个月前入职

的才满足这样的条件。即八个月之前入职的

案例2:.显示满十年服务年限的员工的姓名和受雇日期。

select * from emp where sysdate>=add_months(hiredate,12*10);

案例3:对于每个员工,显示其加入公司的天数。

select sysdate - hiredate "入职天数" from emp;

select trunc(sysdate - hiredate) "入职天数" from emp;

案例4:.last_day(d):返回指定日期所在月份的最后一天。找出各月倒数第三天受雇的所有员工。

求思路:(1)select hiredate,last_day(hiredate)from emp ;

正解:(2)select hiredate,ename from emp where hiredate=last_day

(严谨。(hiredate)-2)

四:转换函数:

转换函数是用于将数据类型从一种转换为另一种。在某些情况下,oracle server 允许的数值类型和实际的不一样,这时oracle server会隐含的转化数据类型。例如:

1.create table t1(id int);

2.insert into t1 values(‘10’)//这样oracle会自动将‘10’转换为数字10/,如果是‘ab’会报错。

注:插入数据时,如果是整数,就不要带单引号。如果为字符串类型,就要带单引号。

3.create table t2(id varchar2(10));