在 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”一词附近有语法错误。
最佳答案
在除法之前而不是之后转换为小数。答案格式的转换。
SELECT
CONVERT( DECIMAL(4,3)
, ( CONVERT(DECIMAL(10,3), abc) / CONVERT(DECIMAL(10,3), xyz) )
) AS def
关于SQL 两个整数相除得到小数值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20008201/