sql避免科学计数法并保留两位小数
SELECT trim(to_char(ROUND((sum(a.BUYE_TRADE_TOTAL)-sum(a.SELL_TRADE_TOTAL)),2), '9999,999,990.00')) AS cQutantity,trim(to_char(ROUND(sum(a.AMOUNT),2), '9999,999,990.00')) AS CAmount,trim(to_char(ROUND(decode(sum(a.QUTANTITY),0,null,sum(a.AMOUNT)/sum(a.QUTANTITY)),2), '9999,999,990.00')) AS CAvgPrice FROM POSITION a
结果:
以trim(to_char(ROUND(sum(a.AMOUNT),2), '9999,999,990.00')) AS CAmount为例:
(1)ROUND(A/B,2),ROUND()函数会将计算结果进行四舍五入。参数:第一个是你的计算表达式,第二个是需要保留的小数位数。
不需要四舍五入直接用表达式,或用TRUNC(A/B,2)。
trim(to_char(sum(a.AMOUNT), '9999,999,990.00')) AS CAmount
(2)使用trim( )函数将字符串左侧空白去掉。
(3)TO_CHAR(A/B,‘99990.00’)
TO_CHAR()是一个格式化函数,第一个参数是计算表达式,第二个参数是指定格式化的格式,如果保留两位小数则小数点后写两个00
第二个参数中常用的替换符0和9,分别代表如下含义:
0:零,在对应位置返回对应的字符,如果没有则以’0’填充。
9:在小数位,则表示转换为对应字符,如果没有则以0表示;在整数位,没有对应则不填充字符.
二者最大的区别是:对应位没有则填0,而9不填充字符;
二者共同点:如果格式的位数不如数字的位数多,则返回‘#’