- ベストアンサー
SQLServer7.0で、SELECT文で列を抽出する ※Nullと0の条件について
SQLServer7.0で、SELECT文で列を抽出する際なんですが、 列A 列B --------- 1 Null 2 Null 3 1 ↑のテーブルから、列Aの1、2だけを抽出するSELECT文を SELECT * FROM XXX WHERE 列B <> 1 と作成したのですが、うまく動作しません(汗) データが一件も取れないのです。(列B:tinyint型、Null許容) テーブル内のデータをNull→0にして、同SELECT文で抽出すればうまくいったのですが。。 Nullデータを、<>XX という条件で取得することはできないんですかねえ・・・。 それとも、テーブルの設定か、条件の記述方法がまずいんでしょうか。 どなたか、ご存知あればアドバイスをお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
再びNo.1です。 >Null値を抽出したいわけではなく、1以外のデータを抽出したいのです。 >そのデータにNullが含まれてるので・・・、 Prynneさんのおっしゃる通り、 >NULLを含める1以外のもの、という条件にするのであれば、 >WHERE (B列 <> 1) OR (B列 IS NULL) とのことですが、(NO.1のPS(追伸)にもありますが、) WHERE (B列 <> 1) AND (B列 IS NOTNULL) でもできますので、蛇足ながら一応補足させていただきす。m(__)m
その他の回答 (2)
ShadowMoonさんのおっしゃる通り、NULL値を抽出するなら「IS NULL」を使用します。 NULLを含める1以外のもの、という条件にするのであれば、 WHERE (B列 <> 1) OR (B列 IS NULL) と指定しなくてはいけません。
お礼
ShadowMoonさん、Prynneさん回答ありがとうなのです。 ・・・・そうなんです。 Null値を抽出したいわけではなく、1以外のデータを抽出したいのです。 そのデータにNullが含まれてるので・・・、 要は 列A 列B --------- 1 Null 2 0 3 1 という列であったらば、列1,2が取れて欲しいので、 >NULLを含める1以外のもの、という条件にするのであれば、 という条件になりますね。。 WHERE (B列 <> 1) OR (B列 IS NULL) はうう・・・、OR条件つけないと動かないですね。 何故だろう、1以外にNullは含まれないのでしょうか。 ちょっと素朴な疑問。。
- ShadowMoon
- ベストアンサー率59% (73/122)
Null値を検索したいのであれば"IS NULL"を使用するのでは・・・?。 SELECT * FROM XXX WHERE 列B IS NULL としてみてください。 PS:NULL値でないものを検索するには”IS NOTNULL”です。
お礼
やっぱりNullデータは IS NULL で指定なんですね。 ちょっとやってみます。
お礼
ありがとうございます~。。 SELECT文は、ひとまず WHERE (B列 <> 1) AND (B列 IS NOTNULL) と記述して対処するようにしましたっ。 助かりました♪