我的表格中有一栏显示金额。数量从一列到另一列不等,超过15位。
格式化数字以显示逗号和小数点的最佳方法是什么?
我的查询是
select amount from ccamounts
如何格式化数字
205511892078
显示为
205,511,892,078
如果有小数点,它也会出现。
答案 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