在Microsoft SQL Server 2005中,为什么以下命令会生成整数结果?
SELECT cast(151/6 AS DECIMAL(9,2))
SELECT 151/6
Run Code Online (Sandbox Code Playgroud)
Mik*_* M. 45
在第一个中,您获得两个整数的结果,然后将结果转换为DECIMAL(9,2).在第二个你只是划分两个整数,这是预期的.
如果在进行除法之前将其中一个整数转换为十进制,则会得到小数结果.
SELECT 151/CAST(6 AS DECIMAL (9,2))
Run Code Online (Sandbox Code Playgroud)
SQL*_*ace 33
是的,这是标准行为
做
SELECT 151/6.0
Run Code Online (Sandbox Code Playgroud)
要么
SELECT 151/(CONVERT(DECIMAL(9,2),6))
Run Code Online (Sandbox Code Playgroud)
要么
SELECT 151/(6 * 1.0)
Run Code Online (Sandbox Code Playgroud)
因为151和6是整数而你正在进行整数除法,甚至在演员之前.
您需要确保至少有一个参数是float类型:
SELECT 151.0/6
Run Code Online (Sandbox Code Playgroud)
要么
SELECT 151/6.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79208 次 |
最近记录: |