Oracle数据库学习笔记(十)

单行函数

Posted by java阳旭 on May 21, 2020

Oracle数据库学习笔记(十)–单行函数

单行函数的概念

作用于一行,返回一个值。

字符函数

1、小写变大写

SELECT upper('yes')
FROM dual;

结果:YES

2、大写变小写

SELECT lower('YES')
FROM dual;

结果:yes

数值函数

1、四舍五入,后面的参数表示保留的位数

SELECT round(26.18, 1)
FROM dual;

结果:26.2

SELECT round(26.14, 1)
FROM dual;

结果:26.1

SELECT round(26.16, -1)
FROM dual;

结果:30

SELECT round(26.16, -2)
FROM dual;

结果:0

SELECT round(56.16, -2)
FROM dual;

结果:100

2、直接截取,不在看后面位数的数字是否大于5

SELECT trunc(56.16)
FROM dual;

结果:56

SELECT trunc(56.16, 1)
FROM dual;

结果:56.1

SELECT trunc(56.16, -1)
FROM dual;

结果:50

3、求余数

SELECT mod(10, 3)
FROM dual;

结果:1

日期函数

1、查询出 emp 表中所有员工入职距离现在几天

SELECT SYSDATE - e.hiredate
FROM emp e;

2、算出明天此刻

SELECT SYSDATE + 1
FROM dual;

3、查询出 emp 表中所有员工入职距离现在几月

SELECT months_between(SYSDATE, e.hiredate)
FROM emp e;

注意:只有月份有 months_between 函数,其余都没有。

4、查询出 emp 表中所有员工入职距离现在几年

SELECT months_between(SYSDATE, e.hiredate) / 12
FROM emp e;

5、查询出 emp 表中所有员工入职距离现在几周

SELECT round((SYSDATE - e.hiredate) / 7)
FROM emp e;

转换函数

1、日期转字符串

SELECT to_char(SYSDATE, 'fm yyyy-mm-dd hh24:mi:ss')
FROM dual;

fm 表示去除日期当中的数字 0。例如,将 2019-07-08 04:49:51 转换为 2019-7-8 4:49:51。

在 hh 后面加上 24,即 hh24 就变为 24 小时制时间了。

输出的是 CHAR 类型。

2、字符串转日期

SELECT to_date('2019-7-8 17:49:51', 'fm yyyy-mm-dd hh24:mi:ss')
FROM dual;

输出的是 DATE 类型。

通用函数

算出 emp 表中所有员工的年薪。奖金里面有 null 值,如果 null 值和任意数字做算术运算,结果都是 null。所以要使用 nvl(e.comm, 0) 将 null 值转换为数字 0.

nvl 函数格式:nvl(expr1,expr2)

如果第一个参数为 null,那么显示第二个参数的值;如果第一个参数的值不为 null,则显示第一个参数本来的值。

SELECT e.sal * 12 + nvl(e.comm, 0)
FROM emp e;