Oracle函数的使用

一、字符函数
介绍:字符函数是Oracle中最常用的函数,我们来看看有哪些字符函数。
1、lower(char):将字符串转化为小写格式。
案例:将所有员工的名字按小写的方式显示
sql>select lower(ename) from emp;

2、upper(char):将字符串转化为大写的格式
案例:将所有员工的名字按大写的方式显示
sql>select upper(ename) from emp;

3、length(char):返回字符串长度
案例:显示正好为5个字符的员工的姓名
sql>select * from emp where length(ename)=5;

4、substr(char,m,n):取字符串的子串,其中m代表从第几个开始取,n代表取几个字符。
案例:显示所有员工的姓名的前三个字符。
sql>select substr(ename,1,3) from emp;

四个函数的综合案例:
以首字母大写的方式显示所有员工的姓名。
sql>select upper(substr(ename,1,1)) || lower(substr(ename,2,length(ename)-1)) from emp;

5、replace(char,searchstr,replacestr):查找字符串中的子串将其替换为另一个字符串,其中searchstr是想要查找的子串,replacestr是要替换成的字符串。
案例:显示所有员工的姓名,用"我是A"替换所有的"A"
sql> select replace(ename,'A','我是A') from emp;

6、instr(char1,char2,[,n[,m]]):取子串在字符串的位置。其中char1是目标字符串,char2是子串。

二、数学函数
1、round(n,[m]):该函数用于执行四舍五入,如果省掉m,则四舍五入到整数;如果m是正数,则四舍五入到小数点的m位后;如果m是负数,则四舍五入到小数点的m为位前。

2、trunc(n,[m]):该函数用于截取数字,如果省掉m,就截取小数部分;如果m是正数,就截取到小数点的m位后;如果m是负数,则截取到小数点的m位前。

3、mod(m,n):该函数用来获取两个数的模。m为被除数,n为除数.

4、floor(n):返回小于或是等于n的最大整数,即向下取整。

5、ceil(n):返回大于或等于n的最小整数,即向上取整。

综合性案例:
显示在一个月为30天的情况所有员工的日薪金,忽略余数:
方法一:sql>select ename,trunc(sal/30) from emp;
方法二:sql>select ename,floor(sal/30) from emp;

6、abs(n):返回数字n的绝对值。

7、acos(n):返回数字的反余弦值。

8、asin(n):返回数字的反正弦值。

9、atan(n):返回数字的反正切值。

10、cos(n):返回数字的余弦值。

11、exp(n):返回e的n次幂。

12、log(m,n):返回对数值。

13、power(m,n):返回m的n次幂。

三、日期函数
介绍:日期函数用于处理date类型的数据。默认情况下日期格式是dd-mon-yy,即12-7月-78。
1、sysdate:该函数返回系统时间。

2、add_months(d,n):返回指定的日期上加n个月。

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

案例:
1、查询已经入职8个月多的员工。
sql>select * from emp where sysdate>add_months(hiredate,8);

2、显示满10年服务年限的员工的姓名和受雇日期。
sql>select ename,hiredate from emp where sysdate>=add_months(hiredate,10*12);

3、对于每个员工,显示其加入公司的天数
sql>select trunc(sysdate-hiredate) from emp;

4、找出各月倒数第三天受雇的所有员工。
sql>select * from emp where hiredate=last_day(hiredate)-2;

四、转换函数
介绍:转换函数用于将数据类型从一种转为另外一种,在某些情况下,Oracle Server允许值的数据类型和实际不一样,这时,Oracle Server会隐式的转换数据类型。
比如:
sql>create table t1(id number);
sql>insert into t1 values('10');
这样Oracle会自动的将'10'转换成10。
sql>create table t2(id varchar2(10));
sql>insert into t2 values(10);
这样Oracle就会自动的将10转换成'10'。
我们要说的是尽管Oracle可以进行隐式的数据类型的转换,大师它并不适应所有的情况,为了提高程序的可靠性,我们应该使用转换函数进行转换。

1、to_char:转换成具有一定格式的字符串。
日期:
yy:两位数字的年份2004=>04
yyyy:四位数字的年份2004
mm:两位数字的月份 8月=>08
dd:两位数字的天 30
hh24:晚上8点=>20
hh12:晚上8点=>08
mi:显示分钟
ss:显示秒

案例:显示雇员的入职时间,精确到时分秒
sql>select ename to_char(hirdate,'yyyy-mm-dd hh24:mi:ss') from emp;
案例:显示1980年入职的员工信息
sql>select * from emp where to_char(hiredate,'yyyy')=1980;

货币:
9:显示数字,并忽略前面0
0:显示数字,如位数不足,则用0补齐
.:在指定位置显示小数点
,:在指定位置显示逗号
$:在数字前加美元标记
L:在数字前加本地货币符号
C:在数字前加国际货币符号
G:在指定位置显示组分隔符
D:在指定位置显示小数点符号

案例:显示雇员的薪水,加上本地货币符号
sql>select ename,tochar(sal,'L99,999.99') from emp;

2、to_date:用于将字符串转换成date类型的数据。
案例:能否按照中国人习惯的方式年-月-日添加日期。
sql>insert into emp values(888,'Jack','MAMAGER',7802,to_date('1981-12-04','yyyy-mm-dd'),800,80,20);

五、系统函数
1、sys_context:通过该函数,可以查询一些重要信息,比如你正在使用哪个数据库等。该函数有以下参数:
(1)terminal:当前会话客户所对应的终端的标识符
(2)language:语言
(3)db_name:当前数据库名称
(4)nls_date_format:当前会话客户所对应的日期格式
(5)session_user:当前会话客户所对应的数据库用户名
(6)current_schema:当前会话客户所对应的默认方案名
(7)host:返回数据库坐在主机的名称
案例:如何获知你正在使用哪个数据库
sql>select sys_context("USERENV","db_name") from dual;

 

posted @ 2010-09-20 01:08  技术勇者  阅读(4925)  评论(1编辑  收藏  举报