已解决
sql on条件判断是要注意null值
来自网友在路上 159859提问 提问时间:2023-09-24 17:09:22阅读次数: 59
最佳答案 问答题库598位专家为你答疑解惑
我是因为用了merge into语法,然后on条件中判断的字段是可配置的,这就导致了,有时候判断条件多的情况下,判断的字段会碰到有null值的情况,如果on两边的字段都是null,null和null对比就会导致结果为false,采取的操作就全都是insert了,碰到这种数据,就永远都不会走到更新逻辑了。
解决方案
使用COALESCE函数:COALESCE函数用于返回一组表达式中的第一个非NULL值,将NULL值替换为其他非NULL值。例如:
MERGE INTO target_table AS T
USING source_table AS S
ON (COALESCE(T.column_name, '') = COALESCE(S.column_name, ''))
WHEN MATCHED THEN-- 更新或插入操作
WHEN NOT MATCHED THEN-- 插入操作
总结
以上方案是可以用,但是存在一个问题时,有可能类型会不匹配,不过测试后发现,基于目前我使用的数据库,采用空字符串可以兼容大部分的类型默认值,包括时间和数字,所以用COALESCE(T.column_name, ‘’)就好了。
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"sql on条件判断是要注意null值":http://eshow365.cn/6-12898-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!