• ベストアンサー

AccessでNULLのデータを判断する方法

ご指導、宜しくお願い致します。 Accessを経由してPostgresのデータベースへ データをインポートしていきたいのですが、 Accessから抽出したデータが空白か空白ではないのかを 判断させたいのですが、以下のように記述しているのですが、正しく判断されないようです。 どのように記述すればよいのでしょうか??? ---------------------------------------- SQL="SELECT 単価,フラグ FROM AAA_TBL" Set RS = Conn.Execute(SQL) IF RS(0) = NULL THEN  RESPONSE.WRITE "空白" ELSE  RESPONSE.WRITE "単価" END IF IF RS(1) = NULL THEN  RESPONSE.WRITE "空白" ELSE  RESPONSE.WRITE "フラグ" END IF ---------------------------------------- Accessdb:AAA_TBL フィールド名/データ型 単価/INT4 フラグ/varchar

質問者が選んだベストアンサー

  • ベストアンサー
  • guruguru2
  • ベストアンサー率29% (39/132)
回答No.1

こんにちわ。 Null判定は、IsNull関数を使って行います。 IF IsNull(RS(0)) = TrueTHEN  RESPONSE.WRITE "空白" ELSE  RESPONSE.WRITE "単価" END IF ↑こんな感じに。 ヘルプにも載っていますので詳しくは参照してみてください。

MMM-SRV
質問者

お礼

guruguru2様 ありがとうございます!! 関数を使ってあげればよかったんですね。 参考になりました。 今後とも宜しくお願い致します。

その他の回答 (3)

  • puzou
  • ベストアンサー率35% (102/284)
回答No.4

こんばんは。 席をはずしておりました。 >NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか? ===== 使い分け、という観点ではないかもしれませんが、 Null=レコードが作られてからまだ一回もデータが入っていない。 ""=何かデータが入ったことはあるが、削除された。 という違いがあります。 私の知ってる限り、MSSQLやORACLEにはこの概念(空白文字)はありません。 プログラムが煩雑になるだけであまり使い分けメリットは思い浮かびません…。 (強いて言うなら入力用テンポラリーのテーブルで、入力があったのかどうかの判別とか???) >また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか? ===== No3の方がされているように、やるしかないですねぇ。 せいぜい、1つのIF文にまとめるぐらいですか。。。 ■パターン1 IF IsNull(RS(1)) = True or RS(1)="" Then   strDate="Nullか空白" ELSE   strDate=RS(1) END IF ■パターン2 IF IsNull(RS(1)) = True Then   strDate="Null" ELSEIF RS(1)="" Then   strDate="空白" ELSE   strDate=RS(1) END IF

MMM-SRV
質問者

お礼

puzou様 回答ありがとうございました。 特別、データを扱う上で注意しなければいけないわけではなさそうですね。 参考になりました。今後とも宜しくお願い致します。

  • guruguru2
  • ベストアンサー率29% (39/132)
回答No.3

こんにちわ。 >SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか? この方法は、 IF IsNull(RS(1)) = True THEN strDate="Nullです" ELSE IF RS(1) = "" THEN strDate="空白文字列です" ELSE strDate=RS(1) END IF END IF とするしかないかもです。

MMM-SRV
質問者

お礼

guruguru2様 回答ありがとうございました。 参考にさせていただきます。

  • puzou
  • ベストアンサー率35% (102/284)
回答No.2

こんにちは。 私もNo1さんが回答されている方法と同じです。 Accessには、Nullのほかに 「ゼロバイトの空白文字列」という概念がありますので そちらも判定するといいと思います。 (Nullのフィールドに何かを入れて削除した場合はコレになります) 判定の仕方は、 IF RS(0) = "" Then … です。

MMM-SRV
質問者

お礼

puzou様 ありがとうございます。 >「ゼロバイトの空白文字列」という概念がありますので >そちらも判定するといいと思います。 そうだったんですね。勉強になります。 もう少し教えてください。 NULLと「ゼロバイトの空白文字列」について・・・ NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか? また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか?