目次
【SQL】NULLの取り扱い方
NULLの判定には「IS NULL」や「IS NOT NULL」を使用します。本記事では、NULLの取り扱い方について解説しています。
また「itemテーブル」には、次のようなデータが格納されていることを前提としています。
【itemテーブル】
ID (id) ※PK | 商品名 (name) | 価格 (price) | カテゴリ (category) |
1 | 商品A | 1980 | 本 |
2 | 商品B | 4980 | 家具 |
3 | 商品C | 7200 | 家具 |
4 | 商品D | 500 | NULL |
スポンサーリンク
NULLを判定する(IS NULL)
「IS NULL算子演」を使うことで、NULLを判定することができます。
IS NULLの基本構文
SELECT * FROM テーブル名 WHERE 列名 IS NULL;
次の例では、「item」テーブルから「カテゴリ(category)」がNULLのデータを抽出しています。
■IS NULLの使用例
SELECT * FROM item WHERE category IS NULL;
■実行結果
+----+-------+-------+----------+ | id | name | price | category | +----+-------+-------+----------+ | 4 | 商品D | 500 | NULL | +----+-------+-------+----------+ 1 row in set (0.00 sec)
NULL以外を判定する(IS NOT NULL)
「IS NOT NULL演算子」を使うことで、NULL以外を判定することができます。
IS NULLの基本構文
SELECT * FROM テーブル名 WHERE 列名 IS NOT NULL;
次の例では、「item」テーブルから「カテゴリ(category)」がNULL以外のデータを抽出しています。
■IS NOT NULLの使用例
SELECT * FROM item WHERE category IS NOT NULL;
■実行結果
+----+-------+-------+----------+ | id | name | price | category | +----+-------+-------+----------+ | 1 | 商品A | 1980 | 本 | | 2 | 商品B | 4980 | 家具 | | 3 | 商品C | 7200 | 家具 | +----+-------+-------+----------+ 3 rows in set (0.00 sec)
INSERT文でNULLを登録する
INSERT文で指定列にNULLを登録するには、VALUESの値に「NULL」を設定することで登録することができます。
スポンサーリンク
次の例では、「item」テーブルに「カテゴリ(category)」がNULLのレコードを新しく追加しています。
■INSERT文でNULLを登録する例
INSERT INTO ITEM (ID, NAME, PRICE, CATEGORY) VALUES ('5', '商品E', '980', NULL);
■実行結果
Query OK, 1 row affected (0.02 sec) > SELECT * FROM item; +----+-------+-------+----------+ | id | name | price | category | +----+-------+-------+----------+ | 1 | 商品A | 1980 | 本 | | 2 | 商品B | 4980 | 家具 | | 3 | 商品C | 7200 | 家具 | | 4 | 商品D | 500 | NULL | | 5 | 商品E | 980 | NULL | +----+-------+-------+----------+ 5 rows in set (0.01 sec)
UPDATE文でNULLに更新する
UPDATE文で指定列をNULLに更新するには、SETの値に「NULL」を設定することで更新することができます。
次の例では、「item」テーブル「id = '3'」のレコードの「カテゴリ(category)」をNULLに更新しています。
■UPDATE文でNULLに更新する例
UPDATE ITEM SET CATEGORY = NULL WHERE ID = '3';
■実行結果
Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 > SELECT * FROM item; +----+-------+-------+----------+ | id | name | price | category | +----+-------+-------+----------+ | 1 | 商品A | 1980 | 本 | | 2 | 商品B | 4980 | 家具 | | 3 | 商品C | 7200 | NULL | | 4 | 商品D | 500 | NULL | | 5 | 商品E | 980 | NULL | +----+-------+-------+----------+ 5 rows in set (0.00 sec)