Nz 函數

套用到
Microsoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

你可以用 Nz 函式回傳零、零長度的字串 (“ ”) ,或在變體為 Null 時返回其他指定值。 例如,您可以使用這個函數將 Null 值轉換為其他值,並阻止其透過運算式傳播。

語法

紐西蘭 (變體 [, valueifnull ] )

Nz 函數語法具有下列引數:

引數 描述
variant 必要。 一個資料型別 為 Variant 的變數。
valueifnull 選用 (除非在查詢中使用)。 一個變 ,若變 參數為 Null,則提供一個要回傳的值。 這個引數可讓您傳回零或零長度字串以外的值。
註: 如果你在查詢的表達式中使用 Nz 函式,但未使用 valueifnull 參數,結果會是包含 null 值的欄位中長度為零的字串。

變體參數的值為 Null,Nz 函式回傳數字為零或零長字串, (在查詢表達式) 中總是回傳零長字串,視上下文指示該值應為數字還是字串而定。 若包含可選的 valueifnull 參數,則 Nz 函式將回傳該參數指定的值,且變 參數為 Null。 在查詢表達式中使用時, NZ 函式應始終包含 valueifnull 參數,

如果 變異 的值不是 Null,則 Nz 函數會回傳變 的值。

註解

Nz 函數適用於可能包括 Null 值的運算式。 若要強制將運算式評估為非 Null 值 (即使包含 Null 值),您可以使用 Nz 函數傳回零、零長度字串或自訂傳回值。

例如,當變體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 函數的運算式。 例如,以下表達式使用 IIf 函數回傳字串,若 的 varFreight 值為 Null

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

在下一個例子中,給 Nz 函式的可選參數會提供若 varFreightNull 時要回傳的字串。

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

查詢範例

運算式 結果
SELECT ProductID,紐西蘭 (折扣,「無詳情可用」) 來源為 ProductSales 的 Expr2; 在 Expr1 欄回傳「ProductID」,評估欄位「Discount」中的「Null」值,並對所有 Null 值回傳「無詳細資訊可用」 (回傳非 Null 值,) 。
SELECT ProductID,紐西蘭 (折扣,「無詳情可用」) 作為 ReplaceNull 來自 ProductSales; 在 Product 欄位回傳「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