numeric 类型 的计算

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 型  。 




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值