一.字符函数
1.chr
给出整数,返回对应的字符;
SQL>select chr(54740) zhao,chr(65) chr65 from dual;
ZHAO CHR65
---- -----
赵 A
2、concat
连接两个字符串;
SQL>select concat('010-','88888888')||'转23' 电话 from dual;
电话
----------------
010-88888888转23
3.substr(string,start,count)
取子字符串,从start开始,取count个
SQL>select substr('13088888888',3,8) from dual;
SUBSTR('13088888888',3,8)
-------------------------
08888888
二.数学函数
1.abs
返回指定值的绝对值;
SQL>select abs(100),abs(-100) from dual;
ABS(100) ABS(-100)
---------- ----------
100 100
2.trunc
按照指定的精度进行舍入;trunc函数为直接截取
SQL>select trunc(55.5),trunc(-55.5) from dual;
TRUNC(55.5) TRUNC(-55.5)
----------- ------------
55 -55
3.round和trunc
按照指定的精度进行舍入;round函数为四舍五入
SQL>select round(55.5),round(-55.4) from dual;
ROUND(55.5) ROUND(-55.4)
----------- ------------
56 -55
三.日期函数
1.add_months
add_months(日期值,增加(减少)值)
增加或减去月份;
SQL>select to_char(add_months(to_date('1999-12','yyyy-mm'),2),'yyyy-mm') from dual;
TO_CHAR(ADD_MONTHS(TO_DATE('19
------------------------------
2000-02
2.next_day(date,'day')
给出日期date和星期X之后计算下一个星期的星期X日期;
SQL>select next_day('18-5月-2001','星期五') next_day from dual;
NEXT_DAY
-----------
2001/5/25
3.sysdate
用来得到系统的当前日期;
SQL>select to_char(sysdate,'day') from dual;
TO_CHAR(SYSDATE,'DAY')
----------------------
星期四
4.months_between(date2,date1)
给出date2-date1的月份,共有多少个月;
SQL>select months_between('19-12月-1999','19-3月-1999') mon_between from dual;
MON_BETWEEN
-----------
9
5.last_day
返回当前月日期的最后一天;
SQL>select to_char(last_day(sysdate),'yyyy-mm-dd') from dual;
TO_CHAR(LAST_DAY(SYSDATE),'YYY
------------------------------
2014-04-30
四.转换函数
1.to_char(date,'format')
日期类型转换成字符串格式(主要用于将日期以习惯的格式输出显示)
SQL>select to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') from dual;
TO_CHAR(SYSDATE,'YYYY/MM/DDHH2
------------------------------
2014/04/24 16:19:34
2.to_number
将给出的数字类型的字符转换为数字;
SQL>select to_number('1999') year from dual;
YEAR
----------
1999
3.to_date(string,'format')
将字符串转换成日期(主要用于将日期按习惯的格式输入到oracle数据库中)
说明:to_date的用户到to_char的日期型用法基本是一样的,只是功能不一样。to_char是用于显示输出数据,to_date是用于输入数据。
五.多行函数
1.avg(distinct|all)
all表示对所有的值求平均值,distinct只对不同的值求平均值
SQL>select avg(distinct sal) from emp;
AVG(DISTINCTSAL)
----------------
2064.58333333333
2.max(distinct|all)
求最大值,ALL表示对所有的值求最大值,DISTINCT表示对不同的值求最大值,相同的只取一次
SQL>select max(distinct sal) from emp;
MAX(DISTINCTSAL)
----------------
5000
3.min(distinct|all)
求最小值,ALL表示对所有的值求最小值,DISTINCT表示对不同的值求最小值,相同的只取一次
SQL>select min(all sal) from emp;
MIN(ALLSAL)
-----------
800
4.order by
用于对查询到的结果进行排序输出(升序排序asc,降序排序desc)
SQL> select deptno,ename,sal from scott.emp order by deptno,sal desc;
DEPTNO ENAME SAL
------ ---------- ---------
10 KING 5000.00
10 CLARK 2450.00
10 MILLER 1300.00
20 SCOTT 3000.00
20 FORD 3000.00