最近一段时间连续的做了几十张报表,通过原生sql对数据进行分析 ,也算是有了一定的了解,发现其中一些函数和表达式使用频率较高,现总结如下:
(1)、round()函数
round函数说白了就是把一个数按照指定的小数位元数进行四舍五入运算的结果
语法形式:ROUND( number, decimal_places )
number: 需要处理的数值
decimal_places : 四舍五入 , 小数取几位 ( 预设为 0 )
例子:
select round(123.456, 0) from dual; 回传 123
select round(123.456, 1) from dual; 回传 123.5
select round(123.456, 2) from dual; 回传 123.46
select round(123.456, 3) from dual; 回传 123.456
select round(-123.456, 2) from dual; 回传 -123.46
(2)、to_char()函数
语法形式:to_char(date,’格式模型’)
to_char(numeric,’格式模型’)
to_char()函数基本上也是我们用的最多的函数了,把日期或数字转换为字符串,不能指定字符串长度。
在做报表方面更多的是使用to_char() 对数字进行特定格式化,接round函数,我们想保留一个数字的有效两位数字,我们就可以结合round,
1 TO_CHAR(ROUND((T.MONTH_TOTAL - T.LAST_MONTH_TOTAL) / 2 T.LAST_MONTH_TOTAL * 100, 2), ‘FM999990.00‘)
然后to_char()还有很多格式化的语句, 继续学习。
(3)、decode()函数
这个函数目前还只有oracle的 pl/sql提供了这个功能,功能十分强大
语法形式:decode(条件,值1,翻译值1,值2,翻译值2,值n,翻译值n,... 缺省值),
IF 条件=值1 THEN
RETURN(翻译值1)
ELSIF 条件=值2 THEN
RETURN(翻译值2)
......
ELSIF 条件=值n THEN
RETURN(翻译值n)
ELSE
RETURN(缺省值)
END IF
当然decode函数另一个比较常用的功能就是比较大小,
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
eg:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。这个功能在报表分析的时候,使用的就不算多了。
其他也有很多使用高频的函数,如sum(),count(),nvl()等等,以后我还会继续总结!!!