函数总结

--函数 相当于方法
--1.系统函数
SELECT * FROM EMP 
--1.字符型
--INITCAP 首字母大写
SELECT INITCAP ('aaa') FROM DUAL
--转小写
SELECT LOWER('DDD') FROM DUAL;--转小写
SELECT UPPER('cx') FROM DUAL;--转大写
--TRIM 去掉左右空格
SELECT TRIM(' AA ')FROM DUAL;
--LENGTH 长度
SELECT LENGTH('DDDDDDD') FROM DUAL;
--LTRIM RIRIM 左右裁剪
SELECT LTRIM('HELLOW WORLD','HELLO')FROM DUAL;
--RTRIM
SELECT RTRIM ('HELLEOW WORLD','ORLD') FROM DUAL;
--REPLACE 替换
SELECT REPLACE('HELLOW WORLD','O','你好') FROM DUAL;
--INSTR查找字符串的位置
SELECT INSTR ('HELLODW WORLD','D')FROM DUAL;
--SUBSTR 截取字符串
SELECT SUBSTR('HELLOW',2) FROM DUAL;
SELECT SUBSTR('HELLOW',2,3) FROM DUAL;--从第几个开始截取截取的个数
--CONCAT 字符串连接\\
SELECT CONCAT('HELLOW','WORLD') FROM DUAL;
--2.数值型
--abs绝对值
SELECT ABS(-14) FROM DUAL;
--FLOOR 向下转型
SELECT FLOOR (10.0001) FROM DUAL;
--CEIL 向上转型
SELECT CEIL (10.12222) FROM DUAL;
--POWER 求幂
SELECT POWER(2,3) FROM DUAL;
--SQRT 求平方根
SELECT SQRT(10) FROM DUAL;
----3.日期型
SELECT SYSDATE FROM DUAL;


--MONTHS_ BETWEEN :返回两个日期之间的月份
SELECT MONTHS_BETWEEN(SYSDATE,'11-3月-18') FROM DUAL;


--ADD MONTHS 返回新日期 新增的月份
SELECT ADD_MONTHS(SYSDATE,2) FROM DUAL --两个月之后的日期


--NEXT_DAY 返回指定日期对应的新日期
SELECT NEXT_DAY(SYSDATE,4) FROM DUAL;--后面可以跟将数字表示天数
SELECT NEXT_DAY(SYSDATE,'星期一') FROM DUAL;


--LAST_DAY 返回指定日期锁在月份的最后一天
SELECT LAST_DAY(SYSDATE) FROM DUAL;


--多行函数
--对一组数据进行运算,针对一组数据(多行记录) 值能返回一个结果,也称之为分组函数和聚合函数
--sun求和 avg平均值 max最大值 min最小值 count 总个数
SELECT SUM(SAL) 工资总和 FROM EMP;
SELECT AVG(SAL) 平均工资 FROM EMP;
SELECT MAX(SAL) 平均工资 FROM EMP;
SELECT MIN(SAL) 最低工资 FROM EMP;
SELECT  COUNT(1) 总人数 FROM EMP;


SELECT SUM(SAL) 工资总和,
 AVG(SAL) 平均工资,
 MAX(SAL) 平均工资,
 MIN(SAL) 最低工资,
 COUNT(1) 总人数 FROM EMP;
 
 SELECT * FROM EMP 
 SELECT MAX(ENAME) FROM EMP; --按照自然排序
 SELECT MAX(HIREDATE) FROM EMP; --最晚的日期
 
 SELECT COUNT(EMPNO) FROM EMP;
 SELECT COUNT(COMM) FROM EMP; --不对空值进行计算
 
 --GROUP BY 分组,将表中的数据分成若干个组
 --语法
 --SELECT 列名,分组函数(要分组的列)
 --from 表名
 --[where 条件}
--[group by 要分组的项}
--[order by 排序]
--统计每个部门的人数


SELECT DEPTNO ,COUNT(1)
FROM EMP
GROUP BY DEPTNO;
--SELECT 后只能跟分组函数或被分组项,group by的字句可以不必 出现select后
--每个部门工作岗位的平均工资
SELECT AVG(SAL) ,JOB,DEPTNO FROM EMP
GROUP BY JOB,DEPTNO
ORDER BY AVG(SAL);


SELECT AVG(SAL) ,JOB,DEPTNO FROM EMP
GROUP BY JOB,DEPTNO
HAVING AVG(SAL) >1500
ORDER BY AVG(SAL);
--注意点:where 和having都是进行条件筛选,where的分组之前,having是分组之后进行条件判断


--3.转换函数以及其他函数
--to_char:转换为字符串
--将日期z型转化为字符型
SELECT SYSDATE FROM DUAL
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:mi:ss') FROM DUAL;


--数字型转换成字符型
--9.代表一个数字,如果该位数没有数字则不展示,但小数点后的会强制转换
SELECT TO_CHAR(1111.11,'9999.999') FROM DUAL;
--0代表一个数字,该位没有数字则进行强制显示
SELECT TO_CHAR(111.11,'000.00000') FROM DUAL;


 --TO_DATE转为日期型
SELECT TO_DATE('2015-11-11','YYYY-MM-DD') FROM DUAL;


--TO_NUMBER 转为数值
--字符型不能进行加法运算,需要转为数值型在进行加法运算
SELECT TO_NUMBER('123.112','9999.999')+10 FROM DUAL;
--小数点的位置要与前面数的位置保持统一
SELECT TO_NUMBER('123.77','9999.99')+10 FROM DUAL ;


--其他函数  if...else
--nvl 如果值为1为空的话,返回第二个值,否则返回第一个值
--计算工资
SELECT EMPNO,ENAME,SAL+NVL(COMM,0) FROM EMP;


SELECT NVL(COMM,0) FROM EMP;

猜你喜欢

转载自blog.csdn.net/xiaoxiaode_shu/article/details/80460116
今日推荐