HOME > 即効テクニック > AccessVBA > クエリ・SQL > NULL値のレコードを抽出する

即効テクニック

クエリ・SQL

NULL値のレコードを抽出する

(Access 2000/2002)
●概要●
NULL値のデータを評価するときは、IS NULLまたはIS NOT NULLを使用します。
NULL値は「無効な値」を表すため、他の演算子を使用して演算を行ってもNULL値が返されます。そのため、NULL値であるレコードを抽出する際に、「WHERE フィールド名 = NULL」と記述してもNULL値のレコードは抽出されません。
サンプルでは、IS NULLキーワードを使用して「職種」がNULL値のレコードを、IS NOT NULLキーワードを使用して「職種」がNULL値でないレコードを抽出します。
●サンプル●
'NULL値のレコードを抽出する
Public Sub Sample()

    Dim myDB As Database
    Dim myRS As DAO.Recordset
    Dim mySQL1, mySQL2 As String

    'SQLステートメントを定義する
    mySQL1 = "SELECT * FROM 社員テーブル WHERE 職種 IS NULL;"
    mySQL2 = "SELECT * FROM 社員テーブル WHERE 職種 IS NOT NULL;"

    'カレントデータベースを変数に代入する
    Set myDB = CurrentDb
    'SQLステートメントを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset(mySQL1, dbOpenDynaset)
    'レコードセットの内容を表示する
    Debug.Print "*** NULLレコード 検索 ***"
    Do Until myRS.EOF
        Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
                & myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
        myRS.MoveNext
    Loop
    'SQLステートメントを実行してレコードセットを開く
    Set myRS = myDB.OpenRecordset(mySQL2, dbOpenDynaset)
    'レコードセットの内容を表示する
    Debug.Print "*** NULLでないレコード 検索 ***"
    Do Until myRS.EOF
        Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
                & myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
        myRS.MoveNext
    Loop
    'レコードセットを閉じる
    myRS.Close

End Sub
●補足●
抽出結果は[イミディエイト]ウィンドウに表示されます。