- ベストアンサー
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
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちわ。 Null判定は、IsNull関数を使って行います。 IF IsNull(RS(0)) = TrueTHEN RESPONSE.WRITE "空白" ELSE RESPONSE.WRITE "単価" END IF ↑こんな感じに。 ヘルプにも載っていますので詳しくは参照してみてください。
その他の回答 (3)
- puzou
- ベストアンサー率35% (102/284)
こんばんは。 席をはずしておりました。 >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
お礼
puzou様 回答ありがとうございました。 特別、データを扱う上で注意しなければいけないわけではなさそうですね。 参考になりました。今後とも宜しくお願い致します。
- guruguru2
- ベストアンサー率29% (39/132)
こんにちわ。 >SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか? この方法は、 IF IsNull(RS(1)) = True THEN strDate="Nullです" ELSE IF RS(1) = "" THEN strDate="空白文字列です" ELSE strDate=RS(1) END IF END IF とするしかないかもです。
お礼
guruguru2様 回答ありがとうございました。 参考にさせていただきます。
- puzou
- ベストアンサー率35% (102/284)
こんにちは。 私もNo1さんが回答されている方法と同じです。 Accessには、Nullのほかに 「ゼロバイトの空白文字列」という概念がありますので そちらも判定するといいと思います。 (Nullのフィールドに何かを入れて削除した場合はコレになります) 判定の仕方は、 IF RS(0) = "" Then … です。
お礼
puzou様 ありがとうございます。 >「ゼロバイトの空白文字列」という概念がありますので >そちらも判定するといいと思います。 そうだったんですね。勉強になります。 もう少し教えてください。 NULLと「ゼロバイトの空白文字列」について・・・ NULLと「ゼロバイトの空白文字列」はどのように使い分けるものなのですか? また、SELECTでデータを抽出した場合に、データがNULLなのか空白文字列なのかを判断する方法はあるのでしょうか?
お礼
guruguru2様 ありがとうございます!! 関数を使ってあげればよかったんですね。 参考になりました。 今後とも宜しくお願い致します。