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

【MySQL入門】NULL値に応じて新しい列にカスタムテキストを表示する方法

MySQLでは、IF()関数を活用することで、カラムの値がNULLかどうかを判定し、その結果に応じて新しい列に任意のカスタムテキストを表示できます。本記事では、実際のサンプルコードとともにその手順をわかりやすく解説します。

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

まず、学生名を格納するシンプルなテーブルを作成しましょう。

mysql> create table DemoTable1953
    (
    StudentName varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

2. テストデータを挿入する

次に、INSERT文を使ってレコードを挿入します。ここでは、通常の名前とNULL値を混在させて登録しています。

mysql> insert into DemoTable1953 values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1953 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1953 values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1953 values(NULL);
Query OK, 1 row affected (0.00 sec)

3. 登録したレコードを確認する

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1953;

実行すると、以下のような結果が得られます。

+-------------+
| StudentName |
+-------------+
| Chris       |
| NULL        |
| David       |
| NULL        |
+-------------+
4 rows in set (0.00 sec)

4. IF()関数でNULL判定を行い、カスタムテキストを表示する

ここが本題です。IF()関数を使うことで、StudentNameがNULLの場合とそうでない場合で、異なるテキストを新しい列「Name」に表示できます。

mysql> select StudentName,
IF(StudentName IS NULL,'Student Name Is Not Found','Student Name Found') as Name 
from DemoTable1953;

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

+-------------+---------------------------+
| StudentName | Name                      |
+-------------+---------------------------+
| Chris       | Student Name Found        |
| NULL        | Student Name Is Not Found |
| David       | Student Name Found        |
| NULL        | Student Name Is Not Found |
+-------------+---------------------------+
4 rows in set (0.00 sec)

解説:IF()関数の仕組み

IF(条件, 真の場合の値, 偽の場合の値)という構文で動作します。上記の例では以下のように評価されています。

  • 条件: StudentName IS NULL — 値がNULLかどうかを判定
  • 真の場合: 「Student Name Is Not Found」を表示
  • 偽の場合: 「Student Name Found」を表示

なお、NULLの判定には必ずIS NULLを使用してください。= NULLのような比較では正しく判定できません。これはSQLにおいてNULLは「不明な値」を意味し、等価比較の対象にならないためです。

補足:CASE式やCOALESCE()を使った代替方法

同じ処理は、可読性の高いCASE式でも実装できます。

SELECT StudentName,
CASE WHEN StudentName IS NULL THEN 'Student Name Is Not Found'
     ELSE 'Student Name Found' END AS Name
FROM DemoTable1953;

また、単純にNULLを別の値に置き換えたいだけであれば、COALESCE(StudentName, '未登録')のように書くことも可能です。用途に応じて使い分けるとよいでしょう。

  1. MySQLで学生の点数に基づいてカスタムメッセージを表示する方法

    MySQLでは、CASE文を使うことで、点数などの数値データに応じてカスタムメッセージを動的に表示できます。この記事では、学生の点数が40点より大きいかどうかを判定し、「Good Marks」または「Not Good Marks」というメッセージを出力する具体的な手順を解説します。 1. サンプルテーブルを作成する まず、点数を格納するためのテーブルを作成しましょう。 mysql> create table DemoTable1952 ( Marks int ); Query OK, 0 rows affected (0.00 sec) 2. テストデータを挿入す

  2. MySQLでNULL値を1として表示・更新する方法

    MySQLでは、テーブル内のNULL値を別の値(たとえば「1」)に置き換えて扱いたい場面があります。この記事では、IFNULL関数とUPDATE文を組み合わせて、NULL値を1に変換する具体的な手順をサンプルコード付きで解説します。 1. サンプルテーブルを作成する まず、動作確認用のテーブルを作成します。 mysql> create table DemoTable1963 ( Counter int ); Query OK, 0 rows affected (0.00 sec) 2. レコードを挿入する INSERT文を使って、NULLを含む複数のレコードを