SQL除以两个整数并得到一个十进制值错误

时间:2013-11-15 18:35:58

标签: sql sql-server asp-classic

在一个SQL语句中,我试图划分两个整数(整数1在我的代码中是“abc”,整数2在我的代码中是“xyz”),并得到一个十进制的结果(在我的代码中为def)下面)。十进制结果应该只有一个前导1或0,后跟一个十进制和十进制后的3个数字。但是我的代码一直返回0而没有小数。

SELECT CONVERT(DECIMAL(4,3), abc/xyz) AS def

当我想要的是“0.001”或“0.963”时,此代码会产生“0”。我相信它仍然将“def”视为整数,而不是小数。

我也尝试在abc和xyz上使用CAST,但它返回相同的东西。我也尝试了以下代码:

SELECT CONVERT(DECIMAL(4,3), abc/xyz) AS CONVERT(DECIMAL(4,3)def)

但这给了我一个错误,说“CONVERT”这个词附近有语法错误。

4 个答案:

答案 0 :(得分:5)

在除法之前转换为十进制,而不是之后。转换为答案格式。

SELECT 
  CONVERT( DECIMAL(4,3)
         , ( CONVERT(DECIMAL(10,3), abc) / CONVERT(DECIMAL(10,3), xyz) ) 
         ) AS def

答案 1 :(得分:1)

这应该这样做。另外加零除以检查。

 SELECT CONVERT(DECIMAL(4,3), abc) / NULLIF(xyz,0)

答案 2 :(得分:0)

尝试类似

的内容
SELECT CONVERT(DECIMAL(4,3), abc/(xyz * 1.0)) AS def

答案 3 :(得分:0)

希望这会有用......

SELECT CONVERT(DECIMAL(4,3), abc/10.0) AS def
  FROM dbo.whatever;