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]