在 SQL 语句中,我试图将两个整数相除(整数 1 在下面的代码中为“abc”,整数 2 在我的代码中为“xyz”),并以小数形式得到结果(在下面的代码中为 def)。小数结果应仅以 1 或 0 开头,后跟小数点和小数点后的 3 个数字。但是我的代码一直返回一个没有小数的直 0。

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

此代码导致“0”,当我想要的是“0.001”或“0.963”之类的东西时。我相信它仍然将“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/

10-13 02:50