四舍五入时我可以截断吗?

时间:2015-10-07 15:16:27

标签: sql-server rounding sql-server-2014 truncation

在SQL Server 2014中,我有一些值具有尾随零以及小数点后的一些值

select top 25 
    ProductName, round(UnitPrice, 1) as 'Price of Products'
from 
    Products

此查询返回如下结果:

Chai                           18.00
Chang                          19.00
Aniseed Syrup                  10.00
Chef Anton's Cajun Seasoning   22.00
Chef Anton's Gumbo Mix         21.40

我的问题是我可以删除小数点后的尾随零,同时保留可能存在的任何值,例如21.40,而其他值只保留为18或22,因为舍入不会删除尾随零

2 个答案:

答案 0 :(得分:1)

SQL Server 2014具有FORMAT功能。

如果将价格四舍五入为2位小数,则格式字符串应如下所示:

FORMAT(ROUND(UnitPrice, 2), '0.##')

事实上,您不需要明确ROUNDFORMAT会以任何方式执行此操作:

FORMAT(UnitPrice, '0.##')

答案 1 :(得分:0)

这是一个黑客攻击,假设你总是有一个小数位。

create table t1 (col1 decimal (5,2));

insert into t1 (col1) values (10.00)
insert into t1 (col1) values (10.50)

select case col1 % 1
  when 0 then PARSENAME(col1, 2)
  else col1
end
from t1
相关问题