SQL Server 2008:为什么这轮不能到两位小数?

时间:2011-02-07 19:33:26

标签: sql sql-server tsql sql-server-2008 rounding

SELECT
   ROUND(WeightInOZ / 16, 2)as WeightInLbs
FROM
   Inventory

我得到的结果看起来像整数1,2等

2 个答案:

答案 0 :(得分:8)

尝试将16更改为16.0

SELECT
   ROUND(WeightInOZ / 16.0, 2)as WeightInLbs
FROM
   Inventory

您看到的结果很奇怪,因为它将您的除法结果视为整数而不是小数。指定.0告诉sql server将其视为小数。

<强>更新

如果尾随的零点吓坏了你,你总是可以这样做:

SELECT
   CAST(ROUND(WeightInOZ / 16.0, 2) AS NUMERIC(8,2)) as WeightInLbs
FROM
   Inventory

答案 1 :(得分:5)

问题在于:

WeightInOZ / 16

由于您正在处理两个整数,因此SQL Server会截断余数,因此没有可用于舍入的小数组件。

您要做的是强制它执行浮点(或十进制)除法。最简单的方法是将16更改为16.0

SELECT
   ROUND(WeightInOZ / 16.0, 2)as WeightInLbs
FROM
   Inventory