格式小数和逗号到检索的数字

时间:2011-09-06 08:10:31

标签: sql oracle

我的表格中有一栏显示金额。数量从一列到另一列不等,超过15位。

格式化数字以显示逗号和小数点的最佳方法是什么?

我的查询是

select amount from ccamounts

如何格式化数字

205511892078

显示为

205,511,892,078

如果有小数点,它也会出现。

3 个答案:

答案 0 :(得分:1)

我会在UI /报表工具/表示层中格式化数字而不是Oracle

但是如果你必须在oracle中格式化它,请尝试:

SELECT 
    CASE WHEN INSTR( TO_CHAR(205511892078),'.')>0 THEN
        TO_CHAR(205511892078 ,'999,999,999,999.99')
    ELSE
        TO_CHAR(205511892078 ,'999,999,999,999') 
    END        
FROM DUAL

这会将数字作为字符串返回。

答案 1 :(得分:1)

我相信您可以使用TO_CHAR来执行此操作,问题是这只是SQL中的格式化函数。它要求您的号码始终采用相同的格式。

以上面的例子你可以做到

TO_CHAR('205511892078','999,999,999,999')

这会格式化您指定的数字,小数位也可以这样做,但需要指定小数:

TO_CHAR('20551189207842','999,999,999,999.99')

会给你205,511,892,078.42

我认为如果字段长度变化,sql将忽略任何不适合格式字符串的东西(它是一个掩码)。也许您想考虑在这种情况下格式化您可能使用的前端数字?

答案 2 :(得分:-1)

declare @d3 decimal (10, 2)

set @d3 = 12309809.5494

SELECT convert(varchar(15),cast(CAST(ROUND(@d3,2,1) AS DECIMAL (30,2)) as money),1) as Value 

SELECT CAST(ROUND(convert(varchar(30), cast(@d3 as money),2),2,1) AS DECIMAL (30,2)) as Value 

输出:

  

12,309,809.55

     

12309809.55