以往工作中数据库使用DB2较多,在SQL开发中多次遇到NULL值的问题。尤其在初期对DB2不是太熟悉,对于问题的排查用了很多的时间。
今天对于DB2中NULL常见问题和大家进行分享。
null值用来做数据比较,导致数据丢失
加工拉链表时,新增数据与历史数据字段进行对比时,字段值中存在null值,导致新增数据丢失,未加工到结果表。
F层数据发生变化(20180802,该条记录币种信息变更为01)
执行完对应存储过程,查看拉链表HIS,该条记录没有闭链,也没有新增一条开链数据
问题分析:
加工HIS表逻辑中,全量提取增量数据(新增数据与历史数据对比,值发生变化的需要提取出来)
源表数据币种信息为null,而null是不可以进行数据对比的,将null值转换为空后,可以进行数据对比。
修改后重新编译存储过程并执行,查看结果。
历史数据闭链,并新增一条开链数据
子查询数据存在null,导致查询结果不准确
在使用notin 的时候需要注意,如果notin 后面的数据范围中有为null的数据,这样会关联不出来数据,即使数据满足条件也不能取出。
下面查询结果为空,但是根据其他渠道知道,这种关联应该是有数据的,这说明语句有不标准的地方
我们找到一条数据,这条数据不存在于子查询中。
分析原因:
子查询中有为null的值,而null值无法用于关联计算。因此导致整个查询失效,即使有符合条件的数据,也无法关联出来。
解决方案:
1、用notexists 代替 notin
2、进行null值转换为空的操作
字段为数字类型在进行各种数学运算
Null值相加,修改后使用nvl函数将null值替换为0,显示正确结果
null值字段与其他字段进行拼接
任何值与null值拼接后都为null,通过nvl函数将null替换为’’后,显示正确结果
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129959.html
摘要:新晋技术专家下面是墨天轮部分新晋的技术专家。大家可以点击往期阅读墨天轮技术专家邀请函了解详情,申请成为我们的技术专家,加入专家团队,与我们一起创建一个开放互助的数据库技术社区。新关联公众号墨天轮是一个开放互助的数据库技术社区。 引言 近期我们在DBASK小程序增加了数据库 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的专题栏目和一些新的技术...
摘要:一直以来,数据库的核心研发团队都十分神秘,作为隐藏在幕后的隐士高人,他们对数据库发展以及数据库研发团队的看法是什么呢本文我们就由巨杉数据库核心技术研发团队的老司机,向大家分享他分布式数据库的自研之路。 一直以来,数据库的核心研发团队都十分神秘,作为隐藏在幕后的隐士高人,他们对数据库发展以及数据库研发团队的看法是什么呢?本文我们就由巨杉数据库核心技术研发团队的老司机,向大家分享他分布式数...
阅读 1236·2023-01-11 13:20
阅读 1543·2023-01-11 13:20
阅读 996·2023-01-11 13:20
阅读 1654·2023-01-11 13:20
阅读 3958·2023-01-11 13:20
阅读 2456·2023-01-11 13:20
阅读 1290·2023-01-11 13:20
阅读 3456·2023-01-11 13:20