本章介绍了oracle数据库中常用的函数,包括数值函数、字符函数、日期函数、转换函数等,为后续较为复杂的查询语句的学习做个铺垫。
1.数值函数
四舍五入、取整函数、常用计算(取绝对值、取平方等)、三角函数。
1.四舍五入
格式:ROUND(n[,m])
备注:对m这个参数做出说明,当省略m时,缺省值是0,即取整;而m>0表示对小数点后m位进行四舍五入,m>0表示对小数点前m位进行四舍五入。
SQL>select round(43.96),round(43.96,1),round(43.96,-1) from dual;
->ROUND(43.96) ROUND(43.96,1) ROUND(43.96,-1)
-------------- --------------- ---------------
44 44.0 40
2.取整函数
格式:CEIL(n)向上取整
格式:FLOOR(n)向下取整
SQL>select ceil(12.3),floor(12.3) from dual;
->CEIL(12.3) FLOOR(12.3)
-------- ----------
13 12
3.常用计算
格式:ABS(n) 绝对值函数
SQL>select abs(12.3),abs(-12.3),abs(0) from dual;
->ABS(12.3) ABS(-12.3) ABS(0)
--------- ---------- ---------
12.3 12.3 0
格式:MOD(m,n) 取余函数,返回m为被除数,n为除数所得的余数
SQL>select mod (6,2) from dual;
格式:POWER(m,n) 返回m的n次幂mn
格式:SQRT(n) 返回n的算术平方根
格式:SIN(n)、ASIN(n)、COS(n)、ACOS(n)、TAN(n)、ATAN(n)返回n(rad)的三角函数值
2.字符函数
1.大小写转换函数
格式:UPPER(char)、LOWER(char)、INITCAP(char)
备注:分别将字符char进行大写、小写、首字母大写。
SQL>select upper('oracle'),lower('oracle'),initcap('oracle') from dual;
->UPPE LOW INI
----- ------ --------
ORACLE oracle Oracle
备注:大小写抓换函数将数据库中的字段进行统一处理,比如实现不区分大小写功能。
2.获取子串函数
格式:SUBSTR(char,[m[,n]])
备注:char为源字符串,m是取子串的开始位置,n是截取子串的位数。m可省略,表示从m处截取到字符串末尾;m为0时表示从字符串首字母开始截取;m为负值时表示从字符串的尾部开始截取。
获取字符串长度函数
格式:LENGTH(char)
SQL>select length('oracle') from dual;
3.字符串连接函数
格式:CONCAT(char1,char2)
SQL>select concat ('oracle','database') from dual;
SQL> select 'oracle'||'database' from dual;
去除子串函数
格式:TRIM(c2 from c1)
备注:表示从c1串中去除c2串
SQL>select trim('o' from 'oracle');
格式:LTRIM[c1,[c2]]
备注:从c1的头部去除第一个c2子串
SQL>select ltrim ('aba','a') from dual;
->LTRIM
------
Ba
格式:RTRIM[c1,[c2]]
备注:从c1的尾部去除第一个c2子串
格式:TRIM(c1)
备注:表示去除字符串c1首尾的空格
4.替换函数
格式:REPLACE(char,s_string[,r_string])
备注:char是要进行替换操作的母字符串,s_string是被替换掉的字符串,r_string是替换成的字符串,r_string缺省值是空格。
SQL>select replace('oracle', 'o', 'O')from dual;
3.日期函数
1.系统时间
格式:SYSDATE
备注:SQL中日期的默认格式是DD-MON-RR(日-月-年),如20-2月-20
2.日期操作函数
格式:ADD_MONTHS(date,i)
SQL>select add_months(sysdate,1),add_months(sysdate,-1) from dual;
备注:返回指定日期上增加的月份,i可以是任何整数(输入小数会自动取整,输入负数会变成减掉相应月份)
格式:NEXT_DAY(date,char)
SQL>select next_day(sysdate,'星期一') from dual;
备注:返回系统日期的下周一的日期
格式:LAST_DAT(date)
备注:返回date日期所在月的最后一天
格式:MONTHS_BETWEEN(date1,date2)
备注:返回日期date1和date2之间间隔的月份(小数形式)
格式:EXTRACT(date FROM datetime)
SQL>select extract(year from sysdate) from dual;
备注:返回日期的年份、月份或者天数,也可以返回时间戳的小时,分钟等信息。
SQL>select extract(second from time_stamp '2020-2-20 19:37:15');
4.转换函数
1.日期转换为字符
格式:TO_CHAR (date[,fmt[,params]])
备注:date是进行转换操作的日期,fmt为转换格式,params是日期的语言(可省略)。常用的格式有YY YYYY YEAR、MM MONTH、DD DAY、HH24 HH12、MI SS
SQL>select to_char(sysdate,'YY-MM-DD HH24:MI:SS');
->TO_CHAR(SYSDATE, ' YY-
-----------------------
2020-2-20 17:50:14
2.字符转换为日期
格式:TO_DATE(char[,fmt[,params]])
3.数字转换为字符
格式:TO_CHAR(number[,fmt])
备注:常用的格式fmt符号
9:显示数字,忽略开头的0
0:显示数字,位数不足时用0补齐
.或D:显示小数点
,或G:显示千位符
S:加正负号
SQL>select to_char(4396.777,'$9999,99') from dual;
字符转换为数字
格式:TO_NUMBER(char[,fmt])