Sql 将小数和逗号格式化为检索到的数字

Sql 将小数和逗号格式化为检索到的数字,sql,oracle,Sql,Oracle,我的表格中有一列显示了金额。金额从一列到另一列不等,超过15位 设置数字格式以显示逗号和小数点的最佳方式是什么 我的问题是 select amount from ccamounts 我如何设置数字格式 205511892078 显示为 205,511,892,078 如果有一个基数点,它也会出现。我会在UI/报告工具/表示层而不是Oracle中格式化数字 但如果必须在oracle中格式化,请尝试: SELECT CASE WHEN INSTR( TO_CHAR(205511892

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

设置数字格式以显示逗号和小数点的最佳方式是什么

我的问题是

select amount from ccamounts
我如何设置数字格式

205511892078
显示为

205,511,892,078

如果有一个基数点,它也会出现。

我会在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

这将以字符串形式返回数字。

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

以上面的例子来说,你可以做到

TO_CHAR('20551189078','9999999999')

这将按照您指定的格式设置数字的格式,并带有小数点,也可以这样做,但需要指定小数点:

TO_CHAR('2055118907842','99999999999')

这将为您提供20551892078.42

我认为,如果字段长度发生变化,sql将忽略任何不符合格式字符串的内容(它是一个掩码)。也许你想考虑在这种情况下格式化你可能使用的前端的数量?< /P>
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 

输出:

12309809.55

12309809.55


这个问题被标记为Oracle,您编写的内容在Oracle上不起作用。看起来像是SQL女士。这对于格式或类型转换问题尤其没有帮助,因为它们太不一样了。