我在我的表中显示一个数量的列。数量从一列变到另一列,它们超过15位数。格式小数和逗号到检索的数字
格式化数字以显示逗号和小数点的最佳方法是什么?
我的查询是
select amount from ccamounts
我如何格式化数字
205511892078
显示为
205,511,892,078
,如果有一个小数点也会出现。
我在我的表中显示一个数量的列。数量从一列变到另一列,它们超过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(“205511892078”,“999,999,999,999”)
,这将格式化数字作为您指定,用一个小数位这可以藏汉做,但小数需要指定:
TO_CHAR( '20551189207842', '999,999,999,999.99')
这将使你205,511,892,078.42
我认为如果字段长度会发生变化,sql将忽略任何不适合格式字符串的内容(这是一个掩码)。也许你想考虑在这种情况下在你可能使用的任何前端格式化数字?
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
这个问题被标记为Oracle和你所写的将无法在甲骨文工作。它看起来像MS SQL。这对格式化或类型转换问题来说特别没有帮助,因为它们如此不同。 –