关于DB2中NULL值使用常见问题分享

概述

以往工作中数据库使用DB2较多,在SQL开发中多次遇到NULL值的问题。尤其在初期对DB2不是太熟悉,对于问题的排查用了很多的时间。

今天对于DB2中NULL常见问题和大家进行分享。案例1

null值用来做数据比较,导致数据丢失

加工拉链表时,新增数据与历史数据字段进行对比时,字段值中存在null值,导致新增数据丢失,未加工到结果表。

关于DB2中NULL值使用常见问题分享

F层数据发生变化(20180802,该条记录币种信息变更为01)

关于DB2中NULL值使用常见问题分享

执行完对应存储过程,查看拉链表HIS,该条记录没有闭链,也没有新增一条开链数据

关于DB2中NULL值使用常见问题分享

问题分析:

加工HIS表逻辑中,全量提取增量数据(新增数据与历史数据对比,值发生变化的需要提取出来)

源表数据币种信息为null,而null是不可以进行数据对比的,将null值转换为空后,可以进行数据对比。

关于DB2中NULL值使用常见问题分享
关于DB2中NULL值使用常见问题分享

修改后重新编译存储过程并执行,查看结果。

历史数据闭链,并新增一条开链数据

关于DB2中NULL值使用常见问题分享

案例2

子查询数据存在null,导致查询结果不准确

在使用notin 的时候需要注意,如果notin 后面的数据范围中有为null的数据,这样会关联不出来数据,即使数据满足条件也不能取出。

下面查询结果为空,但是根据其他渠道知道,这种关联应该是有数据的,这说明语句有不标准的地方

关于DB2中NULL值使用常见问题分享

我们找到一条数据,这条数据不存在于子查询中。

关于DB2中NULL值使用常见问题分享
关于DB2中NULL值使用常见问题分享

分析原因:

子查询中有为null的值,而null值无法用于关联计算。因此导致整个查询失效,即使有符合条件的数据,也无法关联出来。

关于DB2中NULL值使用常见问题分享

解决方案:

1、用notexists 代替 notin

2、进行null值转换为空的操作

关于DB2中NULL值使用常见问题分享
关于DB2中NULL值使用常见问题分享

案例3

字段为数字类型在进行各种数学运算

Null值相加,修改后使用nvl函数将null值替换为0,显示正确结果

关于DB2中NULL值使用常见问题分享
关于DB2中NULL值使用常见问题分享

案例4

null值字段与其他字段进行拼接

任何值与null值拼接后都为null,通过nvl函数将null替换为’’后,显示正确结果

关于DB2中NULL值使用常见问题分享关于DB2中NULL值使用常见问题分享

来源:IT那活儿,本文观点不代表自营销立场,网址:https://www.zyxiao.com/p/125558

发表评论

登录后才能评论
侵权联系
返回顶部