こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

文字例の比較について WHERE句

文字例の比較について、教えてください。
DELETE_FLAGという項目には、文字列の"1"、もしくはNULLが入っています。

セレクト文でDELETE_FLAGが"1"以外のものを抽出したいのですが、うまくいきません。

以下のSQL文を実行した際に、結果として5件ヒットしてほしいのですが、なぜか0件となってしまいます。
select count(product_id) from hpk_atoz_list_view where delete_flag != '1';


原因わかりますでしょうか?

よろしくお願いいたします。

============================================================================
SQL> select delete_flag, product_id from product_list_view;

DELETE_FLAGproduct_ID
---------------------------------
  0002
1 1003
  0002
1 1003
  0002
1 1003
  0002
  0002

8行が選択されました。

SQL>
SQL> select count(product_id) from product_list_view where delete_flag != '1';

COUNT(product_id)
----------
0

SQL>
SQL> select count(product_id) from product_list_view where delete_flag = '1';

COUNT(product_id)
----------
3

SQL>
SQL> select count(product_id) from product_list_view where delete_flag is not null;

COUNT(product_id)
----------
3

SQL>
SQL> select count(product_id) from product_list_view where delete_flag is null;

COUNT(product_id)
----------
5

SQL>
=====以上=====

投稿日時 - 2009-11-09 16:54:36

QNo.5434220

困ってます

質問者が選んだベストアンサー

ご自分で答えを出しておられるようですが……
NULLに比較演算子を適用しても決してTRUEには(FALSEにも)なりません。
以下のページが参考になるでしょう。
3値論理とNULL(http://codezine.jp/a/article/aid/532.aspx

投稿日時 - 2009-11-09 17:10:25

お礼

ありがとうございます。
NULLについて、全く理解できていなかったようです。
教えていただいたサイトを参考にしたところ、意図した動作となりました。

貴重な情報、ありがとうございました。

投稿日時 - 2009-11-09 18:49:53

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

DBは何をお使いでしょうか?

delete_flag != '1' ⇒ delete_flag <> '1'

これではダメですか?

投稿日時 - 2009-11-09 17:04:44

補足

あと、おかしなことに、「delete_flag != '2'」で行うと3件となってしまいます。

==============================================================
SQL> select count(product_id) from product_list_view where delete_flag != '2';

COUNT(product_id)
----------
3

SQL>
SQL> select count(product_id) from product_list_view where delete_flag = '2';

COUNT(product_id)
----------
0

SQL>

投稿日時 - 2009-11-09 17:09:53

お礼

DBはOracle10gです。

delete_flag != '1' ⇒ delete_flag <> '1'

に変更しても結果は0件となってしまいます。

投稿日時 - 2009-11-09 17:08:15

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-