前言:本人目前是在银行业从事数据开发工作,所以本篇文章结合自己的工作实际主要供准备从事银行数据开发小白参考以及自己日后查阅。
- NVL()函数,空值转换
语法格式:NVL(expr1,expr2)
功能:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
应用场景举例:
①.表A与表B根据账号进行左连接得到一个表C,如果连接之后表B某一字段值不为空,则采用表B,否则采用表A,如nvl(B.name,A.name)。
②.处理某一字段当值为空时的情况。
注意事项:expr1,expr2数据类型必须一致,如果不一致,要进行转换,否则会报错。
2.TRUNC() 函数,日期、数值截取
①.处理日期时
语法格式:TRUNC(date,[fmt])。其中:date 为必要参数,是输入的一个日期值,fmt 参数可忽略,默认按天截断。
fmt值参考如下:
功能:TRUNC函数返回以指定元素格式截去一部分的日期值
应用场景举例:构建某一天的月初( 今天的日期SYSDATE为2020-12-28)
SELECT TRUNC(SYSDATE,'MM') FROM DUAL
sysdate为系统日期 dual为虚表
或者构建某一年的年初
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL
或者
SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL
结果都一样,如下
其他:
select trunc(sysdate) from dual
或
select trunc(sysdate,'dd') from dual
都是返回当前年月日,如下
select trunc(sysdate,'d') from dual
或
SELECT TRUNC(DATE'2020-12-31','D') FROM DUAL
都是返回上周的星期天,如下(当天为星期一,31号为星期四,上周星期天日期为27号)
select trunc(sysdate, 'hh24') from dual --返回当前小时
注意事项:TRUNC()函数没有秒的精确
②.处理数值时
语法:TRUNC(number[,decimals]),其中:number 待做截取处理的数值,decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。
功能:TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
应用举例:
SELECT TRUNC(89.985,2) FROM DUAL