NULL的陷阱:Merge


NULL表示unknown,不确定值,所以任何值(包括null值)和NULL值比较都是不可知的,在on子句,where子句,Merge或case的when子句中,任何值和null比较的结果都是false,这就是NULL设下的陷阱,我被坑过。有一次,我使用Merge同步数据,由于target表中存在null值,虽然在source表中对null值做过处理,但是忽略了target表中的null值,导致数据merge失败。step1,创建示例数据step2,插入示例数据示例数据中,Source表和Target表中都存在null值,不管是在Source表,还是在Target表,都要避免和null值进行比较。
step3,错误写法:只处理Source表中的null,而忽略Target表中的null查看Target和Srouce表中的数据,数据不同步,不同步的原因是whenmatched子句之后的and条件, t.code中存在null值,null值和任何值(包括null值)比较的结果都是unknown,在when子句中视为false。正确写法1,不管是在target表,还是在source表,只要存在null值,必须进行处理,避免出现和null进行比较的情况。处理的方式是使用一个值来表示unknwon,如果ID列有效值不可能是负值,那么可以使用-1来代替unknown。因为-1和-1是相等的,逻辑上就将null值和null值视为相同。免费云主机域名确写法2,在条件子句中,使用isnull或isnotnull来处理null值。Tsql使用isnull和isnotnull来确实是,不是null。nullisnull 的逻辑值是true,other_value is null为false, other_value is not null为true。

相关推荐: windows看视频cpu占用过高如何解决

本篇内容介绍了“windows看视频cpu占用过高如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般来说,视频追求高画质,所以需要CPU和显卡的解码你的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/30 15:38
下一篇 01/30 15:46