function_name(column|expression,[arg1,arg2,…])
参数说明:function_name:函数名称
column:数据库列名
expression:字符串或计算表达式
arg1,arg2:在函数中使用参数
接受字符输入并返回字符或数值
如:SELECT UPPER('smith') FROM dual;
如用户查找时不会考虑姓名是大写还是小写,所以在查询语句中为了方便就可以使用upper函数:
SELECT* FROM emp WHERE ename = UPPER('Smith') ;
如:SELECT LOWER ('HELLO WORLD') FROM dual;
如:SELECT INITCAP ('HELLO WORLD') FROM dual;
如将雇员表中的雇员姓名变为首字母大写:
SELECT INITCAP (ename) FROM emp;
但是此种方式不如||好用
如:SELECT CONCAT ('hello','world') FROM dual;
如:SELECT SUBSTR('hello',1,3) 截取字符串,
LENGTH('hello') 字符串长度,
REPLACE('hello', 'l', 'x') 字符串替换
FROM dual;
截取点从0和1都是一样的
如已显示所有雇员的姓名及姓名的后三个字符(因为雇员姓名的字符喜欢长度不一样,只能求出整个的长度再减去2,进行截取):
SELECT ename, SUBSTR(ename,LENGTH(ename)-2) FROM emp;
SUBSTR可以倒着截取,只要输入的位置是负数就表示倒着进行
SELECT ename, SUBSTR(ename,-3,3) FROM emp;
接受数值输入并返回数值
如执行四舍五入操作:
如保留两位小数:
如保留整数位:
与ROUND()不同,在TRUNC()中不会保留任何的小数,而且也不会进位
如验证TRUNC函数:
通过该函数也可以指定小数点的保留位数:
也可以使用负数表示位数:
对日期型数据进行操作
日期±数字=日期
日期-日期=数字(天数)
如:显示10部门雇员进入公司的星期数
首先要知道前日期:
求出星期数:当前日期-雇用日期=天数 天数/7=星期数:
SELECT empno,ename,ROUND((SYSDATE-hiredate)/7) FROM emp;
从一种数据类型转换为另一种数据类型
拆分年月日:如要将雇用日期的年月日进行分开,就可以使用这个函数进行拆分。但是首先必须指定拆分的通配符:
SELECT empno,ename,
TO_CHAR(hiredate,'yyyy') year,
TO_CHAR(hiredate,'mm') months,
TO_CHAR(hiredate,'dd') day
FROM emp;
日期格式转换:
Oracle中默认的日期格式:19-4月 -87
中国的格式:1987-04-19
SELECT empno,ename,TO_CHAR(hiredate,'yyyy-mm-dd') FROM emp;
去掉前导0:如果是5月会用05表示,如果不希望出现的话,可以使用fm去掉
SELECT empno,ename,TO_CHAR(hiredate,'fmyyyy-mm-dd') FROM emp;
分割数字:在数字中加入一些符号以分割太长的数字,一般使用","
9:表示一位数字
SELECT empno,ename,TO_CHAR(sal,'99,999') FROM emp;
金额显示 方式:
$:表示美元
L:Local的缩写,以本地的语言显示金额
SELECT empno,ename,TO_CHAR(sal,'$99,999') FROM emp;
SELECT empno,ename,TO_CHAR(sal,'L99,999') FROM emp;
SELECT TO_NUMBER('123')+TO_NUMBER('123') FROM dual;
SELECT TO_DATE('2009-02-16','yyyy-mm-dd') FROM dual;
如计算年薪
SELECT empno,ename,(sal+comm)*12 FROM emp;
造成这样的结果是有些雇员的奖金是NULL,NULL计算之后还是NULL,此时就可以使用NVL函数,将一个指定的null值变成指定的内容
SELECT empno,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;
类似于IF…ELSE语句
DECODE(col/expression,search1,result1[,search2,result2,…][,default])
说明:col/expression:列名或者表达式
search1、search2…searchi:用于比较的条件
result1、result2…resulti:返回值
如果col/expression和searchi相比较,结果相同的话则返回resulti,如果没有与col/expression相匹配的结果,则返回默认值default
SELECT DECODE(1,1,'内容是1',2,'内容是2',3,'内容是3') FROM dual;