函数(转换函数)(因篇幅过多,所以先写转换函数,剩下的字符型函数,数值型函数,日期型函数,开窗函数,其他函数,可以看我的博客,因为都放一块太多了)
概念:按不同的功能用途而封装好的程序,不必花费大量的心思编写相应的程序,直接使用即可达到目的。
分类:
1.函数从定义角度来说分为“系统函数”与“用户自定义函数”:
系统函数即软件自带的,一些公认的或常用的函数,例如:聚合函数、UPPER、NVL等;
用户自定义函数是用户根据自身需要而自行创建的函数,例如随机点名。
前者在软件中通用,而后者每到一个新环境中都需要重新创立。
2.从作用对象角度来说分为
1)转换函数
2)字符型函数
3)数值型函数
4)日期型函数
5)开窗函数
6)其他函数
一,转换函数
作用范围:针对不同数据类型相互转化时使用,转化时可同时指定目标类型与格式。
转字符:TO_CHAR
转数值:TO_NUMBER
转日期:TO_DATE
1.TO_CHAR
1.1数值转字符
1)无指定格式,单纯由数值转字符
SELECT TO_CHAR(00123) FROM DUAL; --数值会以最简形式显示
2)有指定格式:将数值转字符的同时,指定格式指定格式包括指定精度与指定货币
(1)指定精度
数值转字符中的通配符:通过0或9来代指该位内容
9:指任意数字,若整数位该位置无数字,则格式不生效,小数位该位置无数字以0补全
SELECT TO_CHAR(0001524.254,99999.9999) FROM DUAL; 1524.2540
SELECT TO_CHAR(0001524.254,99999.99) FROM DUAL; 1524.25 --精度不够会四舍五入
0:指任意数字,若整数位该位置无数字,则强制显示为0,小数位一般不用0代指
SELECT TO_CHAR(11.254,'0000.099') FROM DUAL; 0011.245
注意:
a.若指定格式,转换过程中易出现空格,所以常常会搭配去空格函数使用
SELECT TRIM(TO_CHAR(125.25,'9999.9')) FROM DUAL;
b.转换过程中若遇小数位精度过低的情况,则会遵循四舍五入,遇整数位精度过低的情况,则会显示为#
SELECT TO_CHAR(12.2,'9.99999') FROM DUAL; //出现的#号为sum(9)+2
c.可添加千分符,
SELECT TO_CHAR(123456789.254,'999,999,999.999') FROM DUAL; --123,456,789.254
(2)指定货币
$:美元符号
SELECT TO_CHAR(123.36,'$999.99') FROM DUAL; $123.36
SELECT TO_CHAR(123.25,'99$9.99') FROM DUAL;//$可任意放
L:当地货币
SELECT TO_CHAR(123.25,'L999.99') FROM DUAL; ¥123.25
SELECT TO_CHAR(123.25,'99L9.99') FROM DUAL; //ERROR, L不可任意放
1.2日期转字符
拓展:获取当前系统日期的方法
SELECT SYSDATE FROM DUAL; //SYSDATE:到秒
SELECT SYSTIMESTAMP FROM DUAL; // SYSTIMESTAMP:到毫秒
日期格式设计:
1.年
YYYY:四位的年份
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL; //返回当时年份
YYY,YY,Y:分别表示后三位、两位以及一位的年份
2.季度
Q:一年中第几个季度(一位)
SELECT TO_CHAR(SYSDATE,'Q') FROM DUAL;//返回当前季度
3.月份
MONTH:月的全称(右侧空格补齐九位)--英文 ,'NLS_DATE_LANGUAGE = AMERICAN'
SELECT TO_CHAR(SYSDATE,'MONTH') FROM DUAL; //7月
MON:三位字符的月份缩写--英文 ,'NLS_DATE_LANGUAGE = AMERICAN'
SELECT TO_CHAR(SYSDATE,'MON') FROM DUAL; //7月
MM:一年中的第几个月(两位)
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL; //当前所在月份
4.星期
星期:
WW:一年中的第几个星期,从第一天开始算起,一个七天算作一周,和星期几无关
SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
IW:一年中的第几个星期,星期一为本周第一天,每年末最后一个周不足四天算至下年第一周,足四天将下年本周的剩余时间一同算作本年最后一周
W:一个月中的第几个星期,从第一天开始算起,一个七天算作一周,和星期几无关
DAY:星期几全称 (右侧空格补齐九位)--英文 ,'NLS_DATE_LANGUAGE = AMERICAN'
SELECT TO_CHAR(SYSDATE,'DAY') FROM DUAL;
DY:星期几的三位缩写 --英文 ,'NLS_DATE_LANGUAGE = AMERICAN'
SELECT TO_CHAR(SYSDATE,'DY' ,'NLS_DATE_LANGUAGE = AMERICAN') FROM DUAL;
5.天
D:星期中的第几天 --从星期日开始算第一天
SELECT TO_CHAR(SYSDATE,'D') FROM DUAL;
DD:月份中的第几天
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
DDD:年份中的第几天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
6.时
HH,HH12:一天中的第几个小时(12小时制)
SELECT TO_CHAR(SYSDATE,'HH12') FROM DUAL;
HH24:一天中的第几个小时(24小时制)
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
7.分
MI:一小时中的第几分钟
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
8.秒
SS:一分钟中的第几秒
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL;--返回当前的年月日时分秒
9.毫秒
FF:毫秒(默认6位)
SELECT TO_CHAR(SYSTIMESTAMP,'FF') FROM DUAL;
FF3,FF6:FF后跟数字表示毫秒的显示位数
SELECT TO_CHAR(SYSTIMESTAMP,'FF3') FROM DUAL;
2.TO_NUMBER
2.1将只含数字的字符串转化为数值
SELECT TO_NUMBER('25445.21') FROM DUAL;--字符是向左靠的,而数值是向右靠的
2.2 去掉字符串中的特定符号并将剩下的数字转化为数值
特定符号包括:千分符和货币符号
1)去掉千分符
SELECT TO_NUMBER('123,456,789.25','999999999.99') FROM DUAL; 123456789.25
2)去掉货币符号
SELECT TO_NUMBER('$125','$999.99') FROM DUAL; 125
SELECT TO_NUMBER('¥123','L999.99') FROM DUAL; 123
3.TO_DATE
TO_DATE(字符串表示的日期,’与前者对应的日期格式’)
注意:
1.日期数据不同于字符和数值,日期数据存放的是有关该日期的所有数据,通过TO_CHAR指定不同的目标格式,可以转出不同的内容
2.出于上述原因及不同工具日期显示格式不同的原因,很多项目以字符型格式存储日期
SELECT TO_DATE('1998/01/01','YYYY/MM/DD') FROM DUAL;//字符转日期
(二,字符型函数
三,数值型函数
四,日期型函数
五,开窗函数
六,其他函数) 想了解更多的小伙伴可以看我别的博客,因为太多了,都放一块太影响阅读了,不过剩下的除了开窗函数会麻烦些,都很容易理解。