查询
选择 9/5
'显示输出为 1
我想获得 9/5 的准确输出
预期输出
1.8 instead of 1
如何查询
最佳答案
问题是它在做整数运算。您可以通过添加 .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 符合标准。
关于sql - 如何得到准确的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442879/