null值的赋值,比较,判断,游标中断读不下去

NULL真的是一个很棘手的问题。困扰我很长的时间了,现在总算解决了这个问题,得出最深刻的一个感受就是,要对每一个可能为NULL的地方进行特殊处理。

就按照我遇到的问题来说吧。我在写一个游标的时候,游标完成这样的功能:从一张表(假设A)中选择数据,然后再从另一张表(假设B)中选择数据进行对比更新,和相应的计算,然后插入到A表中。这是个很简单的过程,对于整齐的数据可以很顺利的进行下去,可是当异常发生了。。。A表中有的数值为NULL需要选择出来,B表中有的数值为NULL需要更新插入,A,B表中的数值需要进行比较。。。blablabla。。游标在某一条含有NULL值的记录处,罢工了。

我试过各种方法调试,出现的问题也很奇葩,找各路神仙一时半会也搞不懂,于是我觉得对程序进行大改,从根源解决NULL问题,就像我前面说的一样,对于每一个可能为NULL的值都进行特殊处理!奋斗对于NULL,有一条原则需要记住,NULL跟任何值的比较结果都不会为真。

对于select中对于可能出现NULL的地方,可以这样处理,MYSQL自带一个IFNULL(EXP1,EXP2)的函数,判断若EXP1为NULL,则将EXP2的值赋给EXP1,这样就将选择出来的数据断绝了为NULL的可能。很简单的做法,用一个带有标识性的值来替代NULL,通常可以选择'',空格,既能形象的显示该属性的实际无值的概念,又能对以后的比较啊赋值啊提供方便。

对于判断某值是否为NULL的做法:IF (_fixed_version_id IS NULL)THEN。。。一定要这样判断,才可能比较出结果,用神马=,<,>,神马的都是false的。

游标中断的原因是因为某个where语句中的条件    WHERE a.fixed_version_id = _fixed_version_id AND a.id = b.id,_fixed_version_id 可能为NULL,于是这条语句是不能进行下去的。所以一定要用if条件在前面特殊处理一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值