oracle/SQL中的函数
一、字符操作(SQL函数)
SQL>SELECT LOWER(ename) FROM emp;将所有员工的姓名以小写方式显示
SQL>SELECT UPPER(ename) FROM emp;将所有员工的姓名以大写方式显示
SQL>SELECT SUBSTR(ename, 1, 3) FROM emp;显示所有员工姓名的前三个字母。(从第1个字母开始,显示其后的3个字母)
SQL>SELECT ename FROM emp WHERE LENGTH(ename)=5; 显示员工中姓名长度为5个字符的员工的姓名
SQL>SELECT UPPER(SUBSTR(ename, 1, 1))||LOWER(SUBSTR(ename, 2)) FROM emp; 或 SQL>SELECT INITCAP(‘SQL course’) FROM emp; 将所有员工姓名首字母大写其他字母小写的方式显示
SQL>SELECT REPLACE(ename, 'A', 'TIGER') FROM emp;将所有员工姓名中的A替换为TIGER
SQL>SELECT CONCAT(‘SQL’,’Course’) FROM dual; 将SQL与Course连接起来
SQL>SELECT TRIM(‘S’ FROM ‘SSMITH’) FROM dual; 将S从SSMITH中去除
二、数值型函数
SQL>SELECT ABS(-5), SQRT(2), POWER(2,3), COS(3.14159), CEIL(3.4), FLOOR(3.4), MOD(1500,300), ROUND(45.986,1), ROUND(45.986, 0), TRUNC(45.986,1), TRUNC(45.986,-1) FROM dual;结果如下:
|
ABS(-5) |
SQRT(2) |
POWER(2,3) |
COS(3.14159) |
CEIL(3.4) |
FLOOR(3.4) |
|
5 |
1.41421356 |
8 |
-1 |
4 |
3 |
|
MOD(1500,300) |
ROUND(45.92,1) |
ROUND(45.92, 0) |
TRUNC(45.96,1) |
TRUNC(45.96,-1) |
|
|
0 |
45.9 |
46 |
45.9 |
40 |
|
三、日期型函数
SQL>SELECT ADD_MONTHS(’18-10月-10’,1), ADD_MONTHS(’18-10月-10’,-1), LAST_DAY(’18-10月-10’), MONTHS_BETWEEN((‘18-10月-10’, '04-9月-10'), NEXT_DAY('18-10月-10','星期一'), ROUND(TO_DATE(‘18-10月10'),'YEAR'), ROUND(TO_DATE(‘18-10月10'),'DAY'), TRUNC(TO_DATE(‘18-10月10'),'YEAR'), TRUNC(TO_DATE(‘18-10月10'),'DAY') FROM dual;结果如下:
|
ADD_MONTHS(’18-10月-10’,1) |
ADD_MONTHS(’18-10月-10’,-1) |
LAST_DAY(’18-10月-10’) |
MONTHS_BETWEEN((‘18-10月-10’, '04-9月-10') |
NEXT_DAY('18-10月-10','星期一') |
ROUND(TO_DATE(‘18-10月10'),'YEAR'), |
|
18-11月-10 |
18-9月-10 |
31-10月-10 |
1.4516129 |
25-10月-10 |
01-1月-11 |
|
ROUND(TO_DATE(‘18-10月10'),'DAY'), |
TRUNC(TO_DATE(‘18-10月10'),'YEAR') |
TRUNC(TO_DATE(‘18-10月10'),'DAY') |
|
|
|
|
17-10-10 |
01-1月10' |
17-10月-10 |
|
|
|
SQL>SELECT * FROM emp WHERE SYSDATE>=ADD_MONTHS(hiredate,8); 查找已经入职8个月的职工信息
SQL>SELECT * FROM emp WHERE hiredate=LAST_DAY(hiredate)-2; 查找各月倒数第3天入职的员工
四、转换函数
SQL>SELECT ename, sal*13+nvl(comm,0) from emp; 当comm为NULL时,nvl()函数将其转化为0;
SQL>SELECT TO_CHAR(1234.5, ‘$9999.9’), TO_CHAR(SYSDATE, ‘MONTH DD, YYYY, HH24:MI:SS’), TO_DATE(’12-10月-2018’, ‘YYYY-Mon-DD’), TO_NUMBER(‘1234.5’) FROM dual;
|
TO_CHAR(1234.5, ‘$9999.9’) |
TO_CHAR(SYSDATE, ‘MONTH DD, YYYY, HH24:MI:SS’) |
TO_DATE(’12-10月-2018’, ‘YYYY-Mon-DD’) |
TO_NUMBER(‘1234.5’) |
|
$1234.5 |
10月22,2012, 00:56:07 |
18-10月-12 |
1234.5 |
9:显示数字,并忽略前面的0;
0:显示数字,如位数不足,则用0补齐;
.:在指定位置显示小数点
,:在指定位置显示逗号
$:在数字前加美元
L:在数字前面加本地货币符号
C:在数字前面加国际货币符号
G:在指定位置显示组分隔符
D:在指定位置显示小数点符号,或表示星期(1至7)
DD:表示月中的日期(1至31)
MM:表示两位数的月份
Y/YY/YYY/YYYY: 年份的后几位
HH/HH12/HH24: 12小时制/24小时制
MI: 分(1至60)
SS: 秒(0至59)
AM/PM:上午、下午

浙公网安备 33010602011771号