我想显示一个带有3位数分隔符的数字,并在小数点后同时显示5位数。
declare @test float
set @test = 7265342.1234
select convert(varchar(20),cast(@test as money),1)
仅返回7,265,342.12
答案 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);
希望这有帮助!!!