首页 > 代码库 > Oracle内置函数

Oracle内置函数


1.ASCII 返回与指定的字符对应的十进制数;
SQL>select ascii(‘A‘) A,ascii(‘a‘) a,ascii(‘0‘) zero,ascii(‘ ‘) space from dual;

2.chr 给出整数,返回对应的字符;

SQL>select chr(55203) zhu,chr(65) chr65 from dual;

3.concat 连接两个字符串;

SQL>select concat(‘010-‘,‘88888888‘)||‘转23‘ 某公司电话 from dual;

4.INITCAP 返回字符串并将字符串的第一个字母变为大写;

SQL>select initcap(‘smith‘) upp from dual;

5.INSTR(C1,C2,M,N) 在一个字符串中搜索指定的字符,返回发现的字符的位置;

C1:被搜索的字符串

C2:希望搜索的字符串

M :搜索的开始位置,默认为1

N :出现的位置,默认为1

SQL>select instr(‘oracle traning‘,‘ra‘,1,2) instring from dual;


6.LENGTH 返回字符串的长度;


7.LOWER 返回字符串,并将所有的字符小写

SQL> select lower(‘AaBbCcDd‘)AaBbCcDd from dual;


8.UPPER 返回字符串,并将所有的字符大写

SQL> select upper(‘AaBbCcDd‘) upper from dual;

9.RPAD和LPAD(粘贴字符)
RPAD 在列的右边粘贴字符
LPAD 在列的左边粘贴字符
SQL> select lpad(rpad(‘gao‘,10,‘*‘),17,‘*‘)from dual;


LPAD(RPAD(‘GAO‘,1
-----------------
*******gao*******
不够字符则用*来填满


10.LTRIM和RTRIM
LTRIM 删除左边出现的字符串
RTRIM 删除右边出现的字符串
SQL> select ltrim(rtrim(‘ gao qian jing ‘,‘ ‘),‘ ‘) from dual;


11.SUBSTR(string,start,count)
取子字符串,从start开始,取count个
SQL> select substr(‘13088888888‘,3,8) from dual;


12.REPLACE(‘string‘,‘s1‘,‘s2‘)
string 希望被替换的字符或变量
s1 被替换的字符串
s2 要替换的字符串
SQL> select replace(‘he love you‘,‘he‘,‘i‘) from dual;


13.TRIM(‘s‘ from ‘string‘)
LEADING 剪掉前面的字符
TRAILING 剪掉后面的字符
如果不指定,默认为空格符


14.ABS 返回指定值的绝对值
SQL> select abs(100),abs(-100) from dual;


15.CEIL 返回大于或等于给出数字的最小整数
SQL> select ceil(3.1415927) from dual;


16.FLOOR 对给定的数字取整数
SQL> select floor(2345.67) from dual;


1726.MOD(n1,n2) 返回一个n1除以n2的余数
SQL> select mod(10,3),mod(3,3),mod(2,3) from dual;

18.POWER 返回n1的n2次方根
SQL> select power(2,10),power(3,3) from dual;


19.ROUND和TRUNC
按照指定的精度进行舍入
SQL> select round(55.5),round(-55.4),trunc(55.5),trunc(-55.5) from dual;


20.SIGN 取数字n的符号,大于0返回1,小于0返回-1,等于0返回0
SQL> select sign(123),sign(-100),sign(0) from dual;


21.TRUNC
按照指定的精度截取一个数
SQL> select trunc(124.1666,-2) trunc1,trunc(124.16666,2) from dual;


22.ADD_MONTHS
增加或减去月份
SQL> select to_char(add_months(to_date(‘199912‘,‘yyyymm‘),2),‘yyyymm‘) from dual;

SQL> select to_char(add_months(to_date(‘199912‘,‘yyyymm‘),-2),‘yyyymm‘) from dual;


23.LAST_DAY
返回日期的最后一天
SQL> select to_char(sysdate,‘yyyy.mm.dd‘),to_char((sysdate)+1,‘yyyy.mm.dd‘) from dual;


24.MONTHS_BETWEEN(date2,date1)
给出date2-date1的月份
SQL> select months_between(‘19-12月-1999‘,‘19-3月-1999‘) mon_between from dual;


MON_BETWEEN
-----------
9
SQL>selectmonths_between(to_date(‘2000.05.20‘,‘yyyy.mm.dd‘),to_date(‘2005.05.20‘,‘yyyy.dd‘)) mon_betw from dual;


MON_BETW
---------
-60


25.NEW_TIME(date,‘this‘,‘that‘)
给出在this时区=other时区的日期和时间
SQL> select to_char(sysdate,‘yyyy.mm.dd hh24:mi:ss‘) bj_time,to_char(new_time
2 (sysdate,‘PDT‘,‘GMT‘),‘yyyy.mm.dd hh24:mi:ss‘) los_angles from dual;


BJ_TIME LOS_ANGLES
------------------- -------------------
2004.05.09 11:05:32 2004.05.09 18:05:32


26.SYSDATE 用来得到系统的当前日期
SQL> select to_char(sysdate,‘dd-mm-yyyy day‘) from dual;

27.TO_DATE(string,‘format‘) 将字符串转化为ORACLE中的一个日期

28.TO_NUMBER
将给出的字符转换为数字

29.GROUP BY 主要用来对一组数进行统计
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno;


DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
10 3 8750
20 5 10875
30 6 9400

30..HAVING 对分组统计再加限制条件
SQL> select deptno,count(*),sum(sal) from scott.emp group by deptno having counnt(*)>=5;


DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
20 5 10875
30 6 9400
SQL> select deptno,count(*),sum(sal) from scott.emp having count(*)>=5 group by tno ;


DEPTNO COUNT(*) SUM(SAL)
--------- --------- ---------
20 5 10875
30 6 9400

31.ORDER BY 用于对查询到的结果进行排序输出
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;


DEPTNO ENAME SAL
--------- ---------- ---------
10 KING 5000
10 CLARK 2450
10 MILLER 1300
20 SCOTT 3000
20 FORD 3000
20 JONES 2975
20 ADAMS 1100
20 SMITH 800
30 BLAKE 2850
30 ALLEN 1600
30 TURNER 1500
30 WARD 1250
30 MARTIN 1250
30 JAMES 950