SQL 两个整数相除得到小数值错误

标签 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”一词附近有语法错误。

最佳答案

在除法之前而不是之后转换为小数。答案格式的转换。

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/

相关文章:

php - 我的数据库没有插入一些值

php - 如何在 Laravel 架构构建器中制作 [anyType] 数组?

sql - 在 WHERE 子句中使用 OR 时,行将从 LEFT JOIN 中删除

java - ASP 经典的 Base64 图像解码器

vbscript - 带有缓冲区刷新的经典 ASP 循环内故意等待/延迟

sql - GROUP BY 语句 (SQL) 的问题

SQL连接两个表以从第二个表中拆分电子邮件

sql-server - 在另一个字符串中查找字符串的任何部分transact sql

c# - 使用明细表中的外键从 C# 将数据插入 SQL Server 2005 中的主/明细表

javascript - 从弹出窗口重定向时恢复窗口大小