与数据库开发相关的空值是生活中的一个小谜团,对于那些冒险进入数据库世界的新手来说,这是一个完全困惑的话题。 Null值不为零(0),长度为零(0)的字符串,空字段或根本没有任何值-那么Null到底是什么? 本主题的目的是希望解释什么是Null值,讨论有关Null的一些特性,展示我们如何检测到它们,最后是如何将它们转换为不太弯曲的实体。
- 什么是空值?
- Null是Variant子类型,用于指示数据项不包含有效数据,缺少数据或数据是未知的。 此特殊值不是像“ Smith”,#12/24/2006#,25.98等的真实值,而是指示数据丢失,未知或不适用。 默认情况下,表或查询字段以及表单或报表控件中的数据具有变量数据类型。 当您将“字段”或“控件”留为空白时,将自动存储空值。 要记住的一个关键点,值得重申的一点是,只有Variant Data Type con包含Null。
- 有关Null值的一些特殊性。
- 如果表达式的“任何”部分求值为空值,则整个表达式也将具有空值。 这称为空值传播,这是我们应该采取步骤处理它们的关键原因。
- 如果内置或自定义函数的参数求值为Null,则该函数通常返回Null值。 例如,如果您使用SQL或聚合函数来为一组记录计算字段的汇总值,则该字段中具有空值的记录将不计算在内。
- 当您在查询中联接表时,联接字段中具有空值的记录不包括在查询结果中。
- 创建关系并强制执行参照完整性时,仍可以通过在子表中将联接字段保留为空白来在子表中创建孤儿。
- 您如何检测空值?
- 幸运的是,我们有一个函数,该函数返回一个布尔值,该布尔值指示表达式是否包含有效数据(空)。 此函数是IsNull()函数,仅包含1个必需的参数:
IsNull(<expression>) 'returns True if expression is Null 'The required expression argument is a Variant containing a numeric expression or string expression.
- 将Null转换为危害较小的东西。
- 幸运的是,我们有一个与Nulls永无休止的盟友,这就是Nz()函数。 当Variant为Null时,可以使用此函数返回零,零长度字符串(“”)或另一个指定的值。 例如,您可以使用此函数将Null值转换为另一个值,并防止它通过表达式传播。
变量Argument是数据类型Variant的变量。 valueifnull参数是可选的(除非在查询中使用)。 如果Variant参数为Null,则它是Variant,提供要返回的值。 此参数使您可以返回零或零长度字符串以外的值。Nz(variant, [valueifnull])
如果variant参数的值为Null,则Nz函数将返回数字零或零长度的字符串(在查询表达式中使用时始终返回零长度的字符串),具体取决于上下文是否指示该值应为数字或字符串。 如果包括可选的valueifnull参数,则当variant参数为Null时,Nz函数将返回该参数指定的值。 在查询表达式中使用时,NZ函数应始终包含valueifnull参数,
如果variant的值不为Null,则Nz函数将返回variant的值。
Dim varVariant As Variant varVariant = Null Debug.Print Nz(varVariant) 'returns a Zero length String Debug.Print Nz(varVariant, "Null") 'returns the String Null Dim intTest As Integer intTest = 600 Debug.Print Nz((intTest * varVariant) / 16, 9999) 'returns 9999
- 幸运的是,我们有一个与Nulls永无休止的盟友,这就是Nz()函数。 当Variant为Null时,可以使用此函数返回零,零长度字符串(“”)或另一个指定的值。 例如,您可以使用此函数将Null值转换为另一个值,并防止它通过表达式传播。
From: https://bytes.com/topic/access/insights/716197-what-null