Oracle数据库字符函数、数值函数、日期函数、转换函数

字符函数

1、字符函数:接受字符输入并且返回字符或数值
2、数值函数:接受数值输入并返回数值
3、日期函数:对日期型数据进行操作
4、转换函数:将一种数据类型转换为另一种数据类型
5、通用函数:NVL、DECODE 函数

字符函数

【1】大小写转换 UPPER 和 LOWER
SQL> SELECT UPPER(‘smith’) FROM dual;
【2】将雇员姓名变为开头字母大写,INITCAP
SQL> SELECT INITCAP(ename) FROM emp;

字符函数中有连接函数CONCAT,但不如 || 好用,还有字符串处理的一些函数 字符串截取:substr() 字符串长度:length()
内容替换:replace() SQL> SELECT
substr(‘hello’,1,3),length(‘hello’),replace(‘hello’,’l’,’x’) FROM
dual; 这里注意的是Oracle中字符串截取从0和从1开始都是一样的,谨防面试提问

【3】要求显示所有雇员的姓名及姓名的后3个字符
SQL> SELECT ename,SUBSTR(ename,LENGTH(ename)-2) FROM emp;
以上操作显得较为麻烦,substr()函数是可以倒着截取
SQL> SELECT ename,SUBSTR(ename,-3,3) FROM
emp;

数值函数

1、四舍五入:ROUND()
2、截断小数位:TRUNC()
3、取余(取模):MOD
SQL> SELECT ROUND(789.536) FROM dual;
【1】保留2位小数,(如果是-2则对整数进行四舍五入,变为800了)
SQL> SELECT ROUND(783.56,2) FROM dual;
【2】使用MOD()函数进行取余操作
SQL> SELECT MOD(10,3) FROM dual;

日期函数

1、日期 - 数字 = 日期
2、日期 + 数字 = 日期
3、日期 - 日期 = 数字(天数)
【1】求出当前日期
SQL> SELECT SYSDATE FROM dual;
Oracle提供了以下的日期函数支持:
MONTHS_BETWEEN():求出给定日期范围的月数
ADD_MONTHS():在指定日期上加上指定的月数,求出之后的日期
NEXT_DAY():下一个的今天的日期
LAST_DAY():求出给定日期的最后一天日期
【2】求出从雇用日期到今天所有雇员的雇员编号、姓名和月数
SQL> SELECT empno,ename,ROUND(MONTHS_BETWEEN(SYSDATE,hiredate)) FROM emp;
【3】验证 ADD_MONTHS()、NEXT_DAY()、LAST_DAY()
SQL> SELECT ADD_MONTHS(SYSDATE,4) FROM DUAL;
SQL> SELECT NEXT_DAY(SYSDATE,’MON’) FROM DUAL;
SQL> SELECT LAST_DAY(SYSDATE) FROM DUAL;

转换函数

1、TO_CHAR(): 将日期或数值转换成字符串
2、TO_NUMBER():将字符串转换成数字
3、TO_DATE(): 将字符串转换成日期
【1】将年月日进行分开,要指定拆分的通配符,yyyy-mm-dd
SQL> SELECT empno,ename,TO_CHAR(hiredate,’yyyy’) datetime FROM emp;
【2】将薪水的数字进行格式化,’$99,999’表示美元,’L99,999’表示当地货币
SQL> SELECT empno,ename,TO_CHAR(sal,’99,999) salary FROM emp;
【3】TO_NUMBER()验证
SQL> SELECT TO_NUMBER(‘123’)+TO_NUMBER(‘123’) FROM DUAL;
【4】TO_DATE()验证,如下例子执行后显示为 11-JUL-11
SQL> SELECT TO_DATE(‘2011-7-11’,’yyyy-mm-dd’) FROM DUAL;

通用函数

【1】求出每个雇员的年薪(应算上奖金)
SQL> SELECT empno,ename,(sal+comm)*12 FROM emp;
由于comm中有NULL,NULL值计算后还是NULL,正确如下:
SQL> SELECT empno,ename,NVL(comm,0),(sal+NVL(comm,0))*12 income FROM emp;
NVL可以理解为将NULL值转换为具体的内容,这里是0
【2】DECODE()函数,该函数类似于 IF … ELSEIF…ELSE
语法如下:
DECODE(col/expression,选择1,结果1[,选择2,结果2,…,默认])
验证DECODE()函数
SQL> SELECT empno,ename,hiredate,
DECODE(job,’CLERK’,’业务员’,’SALESMAN’,’销售人员’,’MANAGER’,’经理’,’ANALYST’,’分析员’,’PRESIDENT’,’总裁’) 职位
FROM emp;

猜你喜欢

转载自blog.csdn.net/weixin_42778196/article/details/81559609
今日推荐