sql - SQL Server SQL将两个整数相除并得到十进制值错误

  显示原文与译文双语对照的内容

在SQL语句中,我尝试将两个整数( 整数 1""在下面的代码中,整数 2为"xyz"在我的代码中) 分割成一个小数( 在下面的代码中) 。 小数结果应该只有前导 1或者 0,后跟小数后的十进制和 3个数。 但是我的代码一直返回一个没有小数的直 0.


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



当我想要的是" 0.001"或者" 0.963"时,这个代码会导致" 0"。 我认为它仍然将"def"看作一个整数,而不是十进制。

我也试过在abc和xyz上使用强制转换,但它返回。 我还尝试了以下代码:


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



但这给了我一个错误,说在单词"转换"附近有一个语法错误。

时间: 原作者:

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


SELECT 


 CONVERT( DECIMAL(4,3)


, ( CONVERT(DECIMAL(10,3), abc)/CONVERT(DECIMAL(10,3), xyz) ) 


 ) AS def



这样做也可以添加除零的除法。


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



原作者:

希望这个能成功。


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


 FROM dbo.whatever;



尝试一些类似的东西


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



...