SQLの演算子

解決


SQL勉強中  2010-02-17 22:10:02  No: 37669  IP: 192.*.*.*

SQL文について、聞きたいことがあります。項目のJOUTAIはVARCHAR方のデータです。

SELECT JYOTAI FROM TABLE WHERE JOUTAI <> '新'というものをオラクルで実行しても、レコードが選択されません。
SELECT JYOTAI FROM TABLE WHERE JOUTAI = '新'ですと、しっかりとJYOTAIに新が入っているデータを抽出します。

JOUTAIに'新'の文字が入っていないデータを抽出する書き方を教えていただけないでしょうか(NOT EXISTSも試しましたが、結果は同じでした)?

編集 削除
igy  2010-02-17 22:22:51  No: 37670  IP: 192.*.*.*

試していませんが、
  !=
の場合、どうなりますか?

編集 削除
SQL勉強中  2010-02-17 23:06:27  No: 37671  IP: 192.*.*.*

今までのものと同じ結果が出てしまいました。

編集 削除
igy  2010-02-18 00:05:47  No: 37672  IP: 192.*.*.*

ちなみに
SELECT COUNT(*) FROM TABLE WHERE JOUTAI = '新'

SELECT COUNT(*) FROM TABLE
を実行したら、それぞれ、どうなりますか?

編集 削除
SQL勉強中  2010-02-18 00:13:41  No: 37673  IP: 192.*.*.*

テーブルの4件あるデータのうち'新'が2つ入っているので、whereで指定すれば2、  しなければ4となります。

編集 削除
Like  2010-02-18 00:22:41  No: 37674  IP: 192.*.*.*

SELECT JYOTAI FROM TABLE WHERE NOT (JOUTAI LIKE '新');
はどうですか?

ところで、
DB及びバージョンは何ですか?
JYOTAI と JOUTAI は別フィールドですか?
DBエンジン(バージョン)によっては
  <>'新' も !='新' も not (JOUTAI like '新') 全てOKなものもありますよ

編集 削除
Like  2010-02-18 00:25:31  No: 37675  IP: 192.*.*.*

すみません
最初に”オラクルで実行しても”と書いてありますね。
よく読まないで問いただしてしまいました。ゴメンナサイ。

編集 削除
ttt  2010-02-18 01:28:07  No: 37676  IP: 192.*.*.*

ここDelphiのQ&A掲示板だよね…まあいいや
'新'でないところがNULLだということはありませんか?
(NULLを含む比較演算の結果は常にFALSEとなるはず)
where JOUTAI is null としたらどうなります?

編集 削除
SQL勉強中  2010-02-20 23:32:16  No: 37677  IP: 192.*.*.*

ご指摘いただいた通りnullで処理したら、希望通りの結果が得られました。

どうもです^^

編集 削除