使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

当 Variant 为 Null 时,可以使用 Nz 函数返回零、 零长度字符串 (“) 或其他指定值。 例如,可以使用此函数将 Null 值转换为另一个值,并阻止它通过表达式传播。

语法

Nz ( variant [valueifnull ] )

Nz 函数的语法有以下参数:

参数

说明

Variant

必需。 可变的数据类型变量

valueifnull

可选(除非用于查询中)。 如果变量参数为,提供值的变量将被返回。 此参数允许您返回非零值或零长度的字符串。

注意: 如果在查询表达式中使用 Nz 函数而不使用 valueifnull 参数,那么在包含空值的字段中结果将是零长度字符串。

如果 variant 参数的值为 Null则 Nz 函数返回数字零或零长度字符串, (在查询表达式) 中使用时始终返回零长度字符串,具体取决于上下文指示该值应为数字还是字符串。 如果包含可选的 valueifnull 参数,则当变量参数为 Null 时,Nz 函数将返回该参数指定的值。 在查询表达式中使用时, NZ 函数应始终包含 valueifnull 参数,

如果 variant 的值不为 Null,则 Nz 函数返回 variant 的值。

备注

Nz 函数对于可能包含 Null 值的表达式非常有用。 若要强制表达式计算结果为非 Null 值,即使它包含 Null 值,请使用 Nz 函数返回零、零长度字符串或自定义返回值。

例如,当 Variant varXNull 时,表达式 2 + varX 将始终返回 Null 值。 但是, 2 + Nz(varX) 返回 2。

通常可以使用 Nz 函数作为 IIf 函数的替代函数。 例如,在以下代码中,需要包含 IIf 函数的两个表达式才能返回所需结果。 包含 IIf 函数的第一个表达式用于检查变量的值,如果变量为 Null,则将其转换为零。

varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")

在下一个示例中, Nz 函数提供与第一个表达式相同的功能,并且所需结果是通过一个步骤而不是两个步骤实现的。

varResult = IIf(Nz(varFreight) > 50, "High", "Low")

如果为可选参数 valueifnull 提供值,则 当 variantNull 时,将返回该值。 通过包含此可选参数,可以避免使用包含 IIf 函数的表达式。 例如,如果 varFreight 值为 Null,则以下表达式使用 IIf 函数返回字符串。

varResult = IIf(IsNull(varFreight), _
"No Freight Charge", varFreight)

在下一个示例中,提供给 Nz 函数的可选参数提供 varFreightNull 时要返回的字符串。

varResult = Nz(varFreight, "No Freight Charge")

查询示例

Expression

结果

SELECT ProductID, NZ (折扣,“无详细信息”) AS Expr2 FROM ProductSales;

在 Expr1 列中返回“ProductID”,计算字段“Discount”中的“Null”值,并为所有 Null 值返回“无详细信息可用”, (返回) 的非 null 值。

SELECT ProductID, NZ (折扣,“无详细信息可用”) AS ReplaceNull FROM ProductSales;

返回“ProductID”列中的“ProductID”,计算字段“Discount”中的“Null”值,并返回所有 Null 值的“无详细信息可用”, (返回) 的非 null 值,并在 ReplaceNull 列中显示。

VBA 示例

注意: 下面的示例演示了如何在 Visual Basic for Applications (VBA) 模块中使用此函数。 有关使用 VBA 的详细信息,请在搜索旁边的下拉列表中选择“开发人员参考”,并在搜索框中输入一个或多个术语。

以下示例计算窗体上的控件,并根据控件的值返回两个字符串之一。 如果控件的值为 Null,则过程使用 Nz 函数将 Null 值转换为零长度字符串。

Public Sub CheckValue()
Dim frm As Form
Dim ctl As Control
Dim varResult As Variant
' Return Form object variable
' pointing to Orders form.
Set frm = Forms!Orders
' Return Control object variable
' pointing to ShipRegion.
Set ctl = frm!ShipRegion
' Choose result based on value of control.
varResult = IIf(Nz(ctl.Value) = vbNullString, _
"No value.", "Value is " & ctl.Value & ".")
' Display result.
MsgBox varResult, vbExclamation
End Sub

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×