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値を含むデータを柔軟に扱えるようになります。
-
MySQLで現在選択中のデータベースを確認する方法|DATABASE()関数とstatusコマンドの使い方
MySQLに接続している際、「今どのデータベースを選択しているのか」を確認したい場面はよくあります。この記事では、DATABASE()関数やstatusコマンドを使って、現在選択中のデータベース名を簡単に確認する方法を解説します。 DATABASE()関数で選択中のデータベースを確認する MySQLでは、DUALテーブルに対してDATABASE()関数を実行することで、現在選択されているデータベース名を取得できます。 手順1:データベースを選択する まず、例として「business」というデータベースを選択してみましょう。以下のコマンドを実行します。 mysql> use busi
-
MySQLのバージョンを確認する方法をわかりやすく解説
この記事では、現在利用しているMySQLサーバーのバージョンを確認する方法について詳しく解説します。コンソールでクエリを実行する前に、まずクライアントがサーバーに正しく接続されていることを確認しておきましょう。接続が確立されていないと、クエリを実行しても結果を取得できません。MySQLのバージョンを確認する基本クエリ以下のクエリを実行すると、使用中のサーバーのバージョン番号と、実行時点の日付を同時に取得できます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント: 関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つ