select (cast(1 as numeric(18,2))-cast('0.3' as numeric(18,2)))*100 这种方式 numeric 计算没问题
把语句放到update中就没有结果出来,,,why ?
统一为numeric类型的数值计算竟然 变成null 是写update里面的原因ma? update 赋值可以进行这样的计算啊
哦 我知道了 因为表中一个字段的值为null
例如: 当 o_Share2 值 为null 下面的语句 执行成功,没有报错,并且显示 多少行受影响, 但是 RMB这一列的值是 null
update [ordertest]
set RMB=o_Amount_RMB*(1.0-cast(o_Share1 as numeric(18,2))-cast(o_Share2 as numeric(18,2)))
再比如例子:
declare @it nvarchar(10)
set @it=null
select 100*(cast(@it as numeric(18,2)))
declare @it nvarchar(10)
set @it=null
select 100*(1.00-cast(@it as numeric(18,2)))
declare @payday int
set @payday=1;
select dateadd(day,@payday,'2012-1-1')
declare @payday int
set @payday=null;
select dateadd(day,@payday,'2012-1-1')
declare @payday int
set @payday=null;
select dateadd(day,cast(@payday as int),'2012-1-1')
结论: 不能将 null型的值 转换为 float 或 numeric 型 来计算。
。用来计算的值一定保证不能是null 型 。