12月 252012
 

各行において値が入っていない列はNULLが入っています。

NULLが入っている列はどんな条件式とも一致しません、そのためある列の値がNULLである
という条件に一致させる場合には、”IS NULL”演算子を使用します。

たとえば、id, name, age, weight, addressというフィールドがあるテーブルに対して、
以下のようにaddressの値を入れずにINSERTすると、addressフィールドがNULLのデータが
入ります。

mysql> insert into member (name, age, weight) values('mizumoto', 35, 55);
Query OK, 1 row affected (0.00 sec)
mysql> select * from member;
+----+----------+------+--------+---------+
| id | name     | age  | weight | address |
+----+----------+------+--------+---------+
|  1 | tanaka   |   30 |     57 | 東京  |
|  2 | suzuki   |   32 |     77 | 東京  |
|  3 | nakamura |   33 |     52 | 群馬  |
|  4 | miura    |   31 |     67 | 埼玉  |
|  5 | kimura   |   27 |     62 | 茨城  |
|  6 | takai    |   25 |     63 | 千葉  |
|  7 | tadano   |   26 |     43 | 千葉  |
|  8 | murakami |   35 |     42 | 茨城  |
|  9 | kikuchi  |   32 |     41 | 茨城  |
| 10 | suzuki   |   31 |     51 | 茨城  |
| 11 | saeki    |   29 |     49 | 埼玉  |
| 12 | ooyama   |   29 |     48 | 埼玉  |
| 13 | kamata   |   22 |     47 | 埼玉  |
| 14 | mizumoto |   35 |     55 | NULL    |
+----+----------+------+--------+---------+
14 rows in set (0.00 sec)

addressが埼玉以外を抽出しても、addressがNULLの行は抽出されません。

mysql> select * from member where address <> "埼玉";
+----+----------+------+--------+---------+
| id | name     | age  | weight | address |
+----+----------+------+--------+---------+
|  1 | tanaka   |   30 |     57 | 東京  |
|  2 | suzuki   |   32 |     77 | 東京  |
|  3 | nakamura |   33 |     52 | 群馬  |
|  5 | kimura   |   27 |     62 | 茨城  |
|  6 | takai    |   25 |     63 | 千葉  |
|  7 | tadano   |   26 |     43 | 千葉  |
|  8 | murakami |   35 |     42 | 茨城  |
|  9 | kikuchi  |   32 |     41 | 茨城  |
| 10 | suzuki   |   31 |     51 | 茨城  |
+----+----------+------+--------+---------+
9 rows in set (0.00 sec)

もちろん、””とも一致しません。

なので、addressがNULLな行を抽出するにはIS NULL演算子を使います。

mysql> select * from member where address IS NULL;
+----+----------+------+--------+---------+
| id | name     | age  | weight | address |
+----+----------+------+--------+---------+
| 14 | mizumoto |   35 |     55 | NULL    |
+----+----------+------+--------+---------+
1 row in set (0.00 sec)

 Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>