最近、いつ泣きましたか?

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 という条件で取得することはできないんですかねえ・・・。
それとも、テーブルの設定か、条件の記述方法がまずいんでしょうか。
どなたか、ご存知あればアドバイスをお願いします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ありがとうございます~。。

SELECT文は、ひとまず

WHERE (B列 <> 1) AND (B列 IS NOTNULL)

と記述して対処するようにしましたっ。
助かりました♪

お礼日時:2002/08/01 12:00

ShadowMoonさんのおっしゃる通り、NULL値を抽出するなら「IS NULL」を使用します。


NULLを含める1以外のもの、という条件にするのであれば、

WHERE (B列 <> 1) OR (B列 IS NULL)

と指定しなくてはいけません。
    • good
    • 0
この回答へのお礼

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は含まれないのでしょうか。
ちょっと素朴な疑問。。

お礼日時:2002/08/01 11:03

Null値を検索したいのであれば"IS NULL"を使用するのでは・・・?。


SELECT * FROM XXX WHERE 列B IS NULL
としてみてください。
PS:NULL値でないものを検索するには”IS NOTNULL”です。
    • good
    • 0
この回答へのお礼

やっぱりNullデータは IS NULL で指定なんですね。
ちょっとやってみます。

お礼日時:2002/08/01 10:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す