使用分隔符格式化数字并在小数点后显示两位以上的数字

时间:2013-10-08 08:50:24

标签: sql sql-server sql-server-2008-r2

我想显示一个带有3位数分隔符的数字,并在小数点后同时显示5位数。

declare @test float
set @test = 7265342.1234 
select convert(varchar(20),cast(@test as money),1)

仅返回7,265,342.12

1 个答案:

答案 0 :(得分:0)

如果您想以精确格式(十进制后5位数)获取数字,则应使用十进制数据类型来存储数字。 Float是近似数据类型。如果需要上面的精确数字行为,则不应使用此数据类型。将十进制值转换为MONEY或SMALLMONEY也不会有帮助,因为这些数据类型仅支持最多4位小数的精度。以下查询将解决您的要求:

declare @test decimal(38,5)
set @test = 7265342.1234 

DECLARE @CharIndex int = charindex('.', @test)
select replace(convert (varchar(33),cast(LEFT(@test,@CharIndex)as money),1),'.00', '')
+'.' + RIGHT(@test,len(@test) - @CharIndex);

希望这有帮助!!!