こんにちはmasalifeです。
テーブルからクエリで空白のデータを抽出する際に《抽出条件》をIs Nullとしても正しく抽出できないということはないでしょうか。
空白の抽出方法として、Is Nullしか知らない方にとっては、なんだこれ??と悩んでしまう点です。
今回は奥が深い空白のデータの扱い方を簡単に紹介します。
はじめに
Accessでシステムを構築する方は、空白データの抽出方法を正しく理解していないと大きなトラブルを発生する要因となります。
例えば、次のような事象が起きていると業務上問題となりますよね。
空白のデータを抽出するときはIs Nullを使うと考えてしまいがちですが、実は空白には何もデータが入っていない(Null)という意味と空の文字列(””)が入っているという二通りの意味があり、扱う空白がどちらなのかを把握し、それによって対応を行う必要があります。
見ただけではどちらか分からないため、なかなか困る点です。
Is Nullで抽出できないときはダブルクォーテーション2つ(””)を使用する
Is Nullで空白のデータが抽出できないときは空白が空の文字列と認識していることが考えられます。
その場合は、クエリの《抽出条件》にダブルクォーテーションを2つ(””)入力します。
《確認者》フィールドの抽出条件に””と入力し、クエリを実行すると、
未確認データ(空白データ)が正しく抽出できます。
整理すると、
- Is Nullは何も入っていない空のデータを抽出
- ” ” (ダブルクォーテーション2つ)は空の文字列が入っているデータを抽出
となります。
空白データはNz関数を使って、空の文字列(””)に置き換える
基幹システムからデータを抽出⇒Accessでインポート⇒クエリで空白データを抽出⇒リスト出力といった一連の動きを自動化していた場合、「クエリで空白データを抽出」の部分がとても大事になってきます。
単発のデータ加工であれば、正しく抽出できているかの検証をその時点で行うので、Is Nullが適切なのか””が適切なのかを判断できますが、自動化されていると最後に出力されたリストは検証することなく正しいデータ(正しく抽出されている)として扱われます。
長くにわたり正しく動作していたシステムが突然誤作動したことがありましたが、原因は抽出元のデータの空白が今まではNullだったのに空の文字列に置き換わっていました。
そのため、抽出条件をIs Nullとして設定していたクエリで正しい結果(データ)を得られていなく、後続処理でパニックとなってしまいました。
こういう経験から、空白データの抽出をする時は次のようにNz関数を使って、空白データは空の文字列になるように変換してから””で抽出するようにしています。
Nz関数を使って、確認者フィールドのNull値を “”(空の文字列)に変換しています。
このようにすることで、万が一、Nullと空の文字列が混在していても抽出漏れがないようにします。
抽出目的だけではなく、データを統一するという観点からも重要な対応です。
Nz関数の概要についてはこちらの記事で紹介していますので、参考にしてください。
こんにちはmasalifeです。 Accessの力を最大限に発揮させるためには、関数の知識が必要不可欠です。 僕が多くのシステム構築をしてきた経験から、 この関数は覚えといた方がいい というものを順に紹介し[…]
さいごに
空白に2種類の意味があるなんて考えたこともなかったのではないでしょうか?
僕も同じです。
コンピュータは厳格なので、正しい答えを返してもらうためにも正しい指示をかけれるように理解していきましょう。
最後まで読んでいただきありがとうございました。