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不填充字符;
二者共同点:如果格式的位数不如数字的位数多,则返回‘#’

posted @ 2020-02-17 21:32  寒冰射手(电脑)  阅读(1760)  评论(0编辑  收藏  举报