整数在SQL Server中的分工
在Microsoft SQL Server 2005中,为什么以下命令会产生整数结果?
SELECT cast(151/6 AS DECIMAL(9,2)) SELECT 151/6
首先你得到两个整数的结果,然后把结果作为DECIMAL(9,2)。 在第二个,你只是分两个整数,这是预期的。
如果您在进行除法之前将其中一个整数作为小数点,您将得到一个十进制结果。
SELECT 151/CAST(6 AS DECIMAL (9,2))
是的,这是标准的行为
做
SELECT 151/6.0
要么
SELECT 151/(CONVERT(DECIMAL(9,2),6))
要么
SELECT 151/(6 * 1.0)
因为151和6是整数,你正在做整数除法,甚至在演员之前。
您需要确保至less有一个参数是浮点types:
SELECT 151.0/6
要么
SELECT 151/6.0
不是你的问题的直接答案。 如果你在SSRS
需要这个,还是值得看看expression式中的运算符
/划分两个数字并返回一个浮点结果。
\将两个数字相除并返回一个整数结果。
Mod返回除法的整数余数。
您还需要为小数位提供一个占位符
例
SELECT 151.000000/6 OR SELECT 151/6.000000
两者都会产生
25.16666666
出于同样的原因,他们将在C#,Java和其他主stream语言。
整数'算术,CAST是在math之后…
尝试这个:
SELECT 1.0*cast(151/6 AS DECIMAL(9,2)) SELECT 1.0*151/6