MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでNULLかどうかを確認する方法|IF()関数とIS NULLの使い方を解説

MySQLでは、IF()関数IS NULL演算子を組み合わせることで、データがNULLかどうかを簡単に確認できます。この記事では、実際にテーブルを作成し、NULL値を含むレコードを判定する手順を、具体的なSQL文と実行結果とともにわかりやすく解説します。

1. サンプルテーブルを作成する

まず、動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Name varchar(200),
    Age int
);
Query OK, 0 rows affected (0.44 sec)

2. テーブルにレコードを挿入する

次に、INSERTコマンドを使ってレコードを挿入します。ここでは、Ageカラムに意図的にNULLを含めたデータを登録しています。

mysql> insert into DemoTable(Name,Age) values('John',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Name,Age) values('Sam',null);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(Name,Age) values('Mike',23);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(Name,Age) values('David',21);
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable(Name,Age) values('Carol',null);
Query OK, 1 row affected (0.13 sec)

3. 挿入したレコードを確認する

SELECTコマンドでテーブルの中身を表示してみます。

mysql> select *from DemoTable;

実行すると、以下のような結果が出力されます。

+----+-------+------+
| Id | Name  | Age  |
+----+-------+------+
| 1  | John  | 23   |
| 2  | Sam   | NULL |
| 3  | Mike  | 23   |
| 4  | David | 21   |
| 5  | Carol | NULL |
+----+-------+------+
5 rows in set (0.00 sec)

SamとCarolのレコードには、AgeカラムにNULLが格納されていることが確認できます。

4. IF()関数でNULLを判定する

ここからが本題です。以下のクエリを実行すると、AgeカラムがNULLのレコードに対して「Age is missing(年齢が未登録)」というメッセージを表示できます。

mysql> select if(Age IS NULL,'Age is missing',Age) from DemoTable;

実行結果は以下のとおりです。

+--------------------------------------+
| if(Age IS NULL,'Age is missing',Age) |
+--------------------------------------+
| 23                                   |
| Age is missing                       |
| 23                                   |
| 21                                   |
| Age is missing                       |
+--------------------------------------+
5 rows in set (0.00 sec)

NULLだった箇所が「Age is missing」に置き換わって表示され、NULLかどうかがひと目でわかるようになりました。

NULL判定のポイント

NULLは「空文字」や「0」とは異なる特殊な値であり、通常の比較演算子(= や !=)では正しく判定できません。NULLを調べる際は、必ずIS NULLまたはIS NOT NULLを使用する点に注意してください。

また、IF()関数以外にも、NULLを別の値に置き換えるためのIFNULL()COALESCE()といった便利な関数があります。たとえば、以下のように書けばNULLを任意のデフォルト値に置き換えて取得できます。

mysql> select Name, ifnull(Age, 0) as Age from DemoTable;

用途に応じてこれらの関数を使い分けることで、NULL値を含むデータを柔軟に扱えるようになります。

  1. MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方

    MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi

  2. MySQLのバージョンを確認する方法をわかりやすく解説

    この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ