如何获得确切的总数

时间:2012-02-25 09:35:54

标签: sql sql-server sql-server-2000

查询

Select 9/5'显示输出为1

我想获得9/5的确切输出

预期输出

1.8 instead of 1

如何进行查询

2 个答案:

答案 0 :(得分:5)

问题在于它正在进行整数数学运算。您可以通过添加.0

将它们明确地视为十进制数字
SELECT 9.0 / 5.0

您还可以使用CONVERT或CAST更加明确:

SELECT CONVERT(DECIMAL(9,4), 9) / CONVERT(DECIMAL(9,4), 5)

注意:如果任一操作数是十进制数,结果将是十进制数,因此从技术上讲,您只需要转换其中一个。所以这些都可以起作用:

SELECT 9 / 5.0
SELECT 9.0 / 5
SELECT CONVERT(DECIMAL(9,4), 9) / 5
SELECT 9 / CONVERT(DECIMAL(9,4), 5)

它的工作原因是因为ANSI / ISO-SQL标准实际上说数学运算的结果必须与其中一个操作数的数据类型相同。因此,如果两个操作数都是整数,则根据ANSI / ISO-SQL标准的结果也必须是整数。

MySQL在这里违反了标准(可能是为了实用性),但MS SQL符合它。

答案 1 :(得分:0)

我没有访问sql-server,而mysql似乎给出了正确的答案。但是,我会尝试强制一个或两个参数为浮点数(即SELECT 9.0 /5.0)