何时使用空值或默认值

在某些情况下,使用空值比使用默认值更容易、更好。

假设您想了解一个部门所有员工的平均工资。 工资栏不一定需要填写有意义的数值,因此您可以从以下选项中选择:

  • 允许工资列为空值
  • 使用非空默认值(例如0)

通过允许空值,您可以轻松地制定查询, Db2 提供所有已知或记录的工资的平均值。 计算不包括包含空值的行。 在第二种情况下,除非您知道未知工资的非零默认值并据此提出查询,否则您可能会得到一个误导性的答案。

下图显示了两种情况。 图中表格不包括员工编号为200440的工资数据,因为公司刚刚雇佣了该员工,尚未确定工资。 部门 E21 的平均薪资计算方法有所不同,取决于您使用的是空值还是非空默认值。

  • 图左侧假设您使用空值。 在这种情况下,部门 E21 的平均薪资计算仅包括三名员工(000320、000330和200340),因为他们的薪资数据可用。
  • 图右侧假设您使用非零的默认值(0)。 在这种情况下,部门 E21 的平均薪资计算包括所有四名员工,尽管只有三名员工有有效的薪资信息。

如您所见,只有使用空值才能得出部门 E21 的准确平均工资。

图 1。 当空值比默认值更可取时
开始图描述。 该图显示了空值优于默认值的示例。 结束图描述。

在大多数情况下,空值是不同的,因此两个空值彼此不相等。

示例

开始通用编程接口信息。

下面的示例演示了如何比较两列,以查看它们是否相等或两列是否都为空:

WHERE E1.DEPT IS NOT DISTINCT FROM E2.DEPT
通用编程接口信息结束。