sql server 2005table p
字段 mm decimal(4, 2)insert p(mm) values(9.999999)
执行后是10.00insert p(mm) values(9.9911111)
执行后是9.99也就是说,sql server 自动四舍五入了,
我想问问,上面的sql语句怎么能够不让sql server 自动四舍五入,而是返回错误信息
字段 mm decimal(4, 2)insert p(mm) values(9.999999)
执行后是10.00insert p(mm) values(9.9911111)
执行后是9.99也就是说,sql server 自动四舍五入了,
我想问问,上面的sql语句怎么能够不让sql server 自动四舍五入,而是返回错误信息
因为我不需要sql server自动四舍五入。
if(插入值的小数位>2)
begin
goto Error1
endreturn
Error1:
RAISERROR ('输入的值的位数超过两位', 16, 1)
这种insert 完全不符合数据库的字段定义,而且我想
有很多用户不需要sql server 这么聪明。
为什么超过小数点位数的decimal就要自动四舍五入,正常insert呢。
insert p(mm) values(9.999999) 实际上执行的是
insert p(mm) values(cast(9.999999 as decimal(4,2))) 问题是,如果用户想四舍五入,完全可以直接把sql写成、
insert p(mm) values(cast(9.999999 as decimal(4,2)))
而不需要数据库引擎直接想当然的四舍五入。