删除小数位

时间:2014-05-27 10:11:51

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

我有一组十进制值,但如果它们为零,我需要删除小数点后的值。

17.00
23.50
100.00
512.79

成为

17
23.50
100
512.79

目前,我转换为字符串并替换尾随.00 - 有更好的方法吗?

REPLACE(CAST(amount as varchar(15)), '.00', '')

2 个答案:

答案 0 :(得分:0)

这听起来像纯粹是一个数据表示问题。因此,您应该让接收应用程序或报告软件处理格式化。

您可以尝试将.00s转换为数据类型int。这会截断小数。但是,由于所有值都出现在一列中,因此它们必须具有相同的类型。将所有内容设为int会使实际小数位破坏您的行。

作为演示问题的SQL解决方案,我认为你所拥有的就是好的。

答案 1 :(得分:0)

我建议你将原始十进制值与其自身进行比较。示例代码:

declare 
  @Val1 decimal(9,2) = 17.00, 
  @Val2 decimal(9,2) = 23.50;    

select 
  case when FLOOR ( @Val1 ) = @Val1 
     then cast( cast(@Val1 as int) as varchar) 
     else cast(@Val1 as varchar) end, 
  case when FLOOR ( @Val2 ) = @Val2 
     then cast( cast(@Val2 as int) as varchar) 
     else cast(@Val2 as varchar) end
 -------------
 17   |   23.50