sql两个int相除结果为整数解决方法

今天在测试时发现有个money字段值总为0,在对存储过程调试后发现了问题,问题重现:

declare @a int, @b int
set @a = 2
set @b = 10
print @a/@b --输出0

我们想得到的是0.2,结果被取整了,又做了几个测试:

declare @a int, @b int
set @a = 2
set @b = 10
print cast(@a/@b as money) --输出0.00

declare @a money, @b money
set @a = 2
set @b = 10
print @a/@b --输出0.20

综合上边测试结果,在不改变sql中@a和@b类型的前提下,sql脚本修改为:

declare @a int, @b int
set @a = 2
set @b = 10
print @a/cast(@b as money) --输出0.20

多个int相除时注意转换顺序:

print 2/10/cast(1 as money) --输出0.00
print 2/cast(1 as money)/10 --输出0.20
print cast(1 as money)*2/10 --输出0.20


评论: 0 | 引用: 0 | 查看次数: 6182
发表评论
登录后再发表评论!