在一个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”这个词附近有语法错误。
答案 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;