wil*_*iam 48 sql-server sql-server-2005
在SQL中,我有col1和col2.两者都是整数.
我想这样做:
select col1/col2 from tbl1
Run Code Online (Sandbox Code Playgroud)
我得到的结果1是col1=3和col2=2
我想要的结果是 1.1
我说round(col1/col2,2).结果仍然是1.
我说decimal(col1/col2,2).小数不是在函数中构建的.
我怎么能完全得到1.1?
And*_*y M 101
另一种方法:
SELECT col1 * 1.0 / col2 FROM tbl1
Run Code Online (Sandbox Code Playgroud)
乘以1.0会将整数转换为浮点数 (13,1),因此类似于类型转换,但很可能它比它慢.
Aleksandr Fedorenko在评论中暗示的略微变化:
SELECT col1 * 1. / col2 FROM tbl1
Run Code Online (Sandbox Code Playgroud)
效果基本相同.唯一的区别是在这种情况下的乘法结果将是数字(12,0).
主要优势:比其他方法更少罗嗦.
Shi*_*mar 45
在分割之前,您需要将值转换或转换为十进制.看看这个 http://msdn.microsoft.com/en-us/library/aa226054.aspx
例如
DECLARE @num1 int = 3 DECLARE @num2 int = 2
SELECT @num1/@num2
SELECT @num1/CONVERT(decimal(4,2), @num2)
Run Code Online (Sandbox Code Playgroud)
第一个SELECT将导致您看到的内容,而第二个SELECT将有正确的答案 1.500000
ben*_*siu 14
SELECT CAST (col1 as float) / col2 FROM tbl1
一个演员应该工作.("少即是多.")
来自联机丛书:
返回具有更高优先级的参数的数据类型.有关数据类型优先级的详细信息,请参阅数据类型优先级(Transact-SQL).
如果整数被除数除以整数除数,则结果是一个整数,其结果的任何小数部分都被截断
| 归档时间: |
|
| 查看次数: |
168857 次 |
| 最近记录: |