Accessによる計算において、Nullデータの計算は数値として認識されず、結果が返されません。
具体的には、5+Null = Null のように計算結果にNullを返すことになります。
データベースで数値情報を蓄積する中、クエリ等で計算が必要になる機会もでてきますが、Nullの場合はゼロとして扱うことが多く、この際の処理方法を紹介します。
サンプルデータ
サンプルテーブルとして「テーブルA」を作成し、フィールドには「数値A」と「数値B」を作成、それぞれのデータ型を「数値型」とします。
次に、以下のようにサンプルデータを入力します。
数値A | 数値B |
15 | 10 |
10 | |
11 |
特に、2レコード目、3レコード目は各フィールドがNullとなっています。これらデータについて、クエリで単純な足し算の結果を見ていきます。次いで、Nz関数を用いた場合の結果も見てみましょう。
サンプルクエリ
今回作成するサンプルクエリは次のように【フィールド】の項目を設定します。
① 数値A
② 数値B
③ 合計: [数値A] + [数値B]
④ Nzを利用した合計: Nz([数値A],0)+Nz([数値B],0)
これらは図1に示したとおりです。
そして、作成したクエリからデータシートビューで内容を確認したものが図2となります。
まず、単純に足し算をした③の結果の場合、Nullを含んだ結果はそのままNullを返しています。一方、Nz関数を用いて、Nullをゼロと代替し計算した④の結果はそれぞれ、Null=0として足し算した結果を返しています。
それでは、Nz関数について詳しく見ていきましょう。
Nz関数について
まず、Nz関数の構文は以下のようになります。
Nz ( variant [, valueifnull ] )
各引数の説明は次のとおりです。
引数 | 説明 |
variant | 必須。 データ型 Variant の変数です。今回はクエリのフィールドを設定しています。 |
valueifnull | variant 引数が NULL の場合に返す値を提供する Variant です。 この引数を使用すると、0 または長さが 0 の文字列以外の値を返すことができます。上述の例では「0」を設定しました。 |
それでは、改めてNz関数による処理を含めたプロセスを確認しましょう。
先に紹介した④の「Nzを利用した合計: Nz([数値A],0)+Nz([数値B],0)」について、各フィールドでNullとなった場合は、代わりに「0」として扱い計算することとしており、その結果が返されたものとなります。
まとめ
今回は、数値計算としてNullをゼロと代替しましたが、例えば文字列のフィールドでNullの場合に、Nz関数として「値無し」といったワードに置き換えることも可能です。データ処理をする際に、Nullの取り扱いは難しく、状況に応じた処理が必要になりますがNz関数を用いれば様々な処理をすることができますので、是非活用していただければと思います。
スポンサーリンク
コメント