[前][次][番号順一覧][スレッド一覧]

mysql:5612

From: Youichi Iwakiri <Youichi Iwakiri <yiwakiri@xxxxxxxxxx>>
Date: Tue, 11 Jun 2002 12:29:42 +0900
Subject: [mysql 05612] Re: NULL の select 文

いわきりです

[mysql 05610] NULL の select 文
goudo wrote in <00d101c210f8$844b5ae0$a00a14ac@xxxxxxxxxx>:
 >すいませんが、何方か教えて欲しいのですが
 >NULLのselect文がうまくいかなくて困っています。
 >
 >select 注文番号 from nouki where 
 >            品目番号=NULL;
 >
 >とSQL文で書いても、NULLがあるのに
 >データを引いてくれません。
 >NULLデータは確かにあります。
 >
 >NULLのデータ抜き出すにはどのように書いたら
 >良いのでしょうか?。

下記、マニュアルからの抜粋ですが、IS NULLを使うのでしょう。

--------------------------
A.5.3 NULL 値での問題

SQL の初心者のありがちな混乱は、NULL 値が空文字列 '' と同じ物だと考えることです。これは正しくありません! 
例えば、次のステートメントは全く別のものです: 

mysql> INSERT INTO my_table (phone) VALUES (NULL);
mysql> INSERT INTO my_table (phone) VALUES ("");

両方の文とも phone フィールドに値を挿入していますが、初めのは NULL 値を挿入し、二番目のは空文字列を挿入しています。
初めのは ``電話番号を知らない'' と見なされ、二番目のは ``彼女は電話を持っていない'' と見なされます。 

SQL では、 NULL は他の全ての値(たとえ NULL でも)と比較した時に、常に偽になる値です。
 NULL を含む式は、特に断りがなければ、常に NULL 値を生成します。次の項目は全て NULL を返します: 

mysql> SELECT NULL,1+NULL,CONCAT('Invisible',NULL);
NULL 値がセットされている項目を検索する場合、 =NULL テストを行わないでください。
これは expr = NULL が FALSE なので、なんの行も返しません。例えば以下の例: 

mysql> SELECT * FROM my_table WHERE phone = NULL;

NULL 値を持つフィールドを検索したい場合は、IS NULL テストを使用しなくてはいけません。

次は NULL 電話番号と空の電話番号を見つける方法を示しています: 

mysql> SELECT * FROM my_table WHERE phone IS NULL;
mysql> SELECT * FROM my_table WHERE phone = "";

[前][次][番号順一覧][スレッド一覧]

      5610 2002-06-11 12:31 ["goudo" <goudo@xxxxx] NULL の select 文                       
      5611 2002-06-11 12:23 ┣[Tomohiro 'Tomo-p' KA]                                       
      5615 2002-06-11 17:15 ┃┗["goudo" <goudo@xxxxx]                                     
->    5612 2002-06-11 12:29 ┗[Youichi Iwakiri <yiw]                                       
      5613 2002-06-11 12:48  ┗[Daiju Azuma <daiju_a]