SQLの演算子

解決


SQL勉強中  2010-02-18 07:10:02  No: 37669

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

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

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


igy  2010-02-18 07:22:51  No: 37670

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


SQL勉強中  2010-02-18 08:06:27  No: 37671

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


igy  2010-02-18 09:05:47  No: 37672

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

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


SQL勉強中  2010-02-18 09:13:41  No: 37673

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


Like  2010-02-18 09:22:41  No: 37674

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

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


Like  2010-02-18 09:25:31  No: 37675

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


ttt  2010-02-18 10:28:07  No: 37676

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


SQL勉強中  2010-02-21 08:32:16  No: 37677

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

どうもです^^


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加