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

MySQLでNULLの値を別の列に0として表示する方法(CASE文の使い方)

MySQLでは、カラムの値がNULLである場合に、SELECT文の結果として新しい列に0を返したいケースがよくあります。例えば、価格データの欠損値を集計や表示のために0として扱いたい場合などです。

このような場合には、CASE文を使用するのが最も基本的な方法です。CASE文を使うことで、条件に応じて異なる値を返すことができます。

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

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

mysql> create table DemoTable703 (Price int);
Query OK, 0 rows affected (0.46 sec)

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

次に、INSERTコマンドを使ってサンプルデータを挿入します。ここでは、通常の数値とNULL、そして0を混ぜて登録しています。

mysql> insert into DemoTable703 values(102);
Query OK, 1 row affected (0.27 sec)
mysql> insert into DemoTable703 values(null);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable703 values(0);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable703 values(500);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable703 values(100);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable703 values(null);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable703 values(2340);
Query OK, 1 row affected (0.14 sec)

3. 現在のデータを確認する

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

mysql> select *from DemoTable703;

実行結果は以下の通りです。NULLが含まれていることがわかります。

+-------+
| Price |
+-------+
| 102   |
| NULL  |
| 0     |
| 500   |
| 100   |
| NULL  |
| 2340  |
+-------+
7 rows in set (0.00 sec)

4. CASE文でNULLを0に変換する

ここでCASE文を使用し、PriceNULLの場合は0を返し、それ以外の場合は元の値をそのまま返すようにします。結果は「Result」という別名の新しい列として出力されます。

mysql> select Price, case When Price IS NULL Then 0 else Price END AS Result from DemoTable703;

実行結果を見ると、NULLだった行がすべて0に変換されていることが確認できます。

+-------+--------+
| Price | Result |
+-------+--------+
| 102   | 102    |
| NULL  | 0      |
| 0     | 0      |
| 500   | 500    |
| 100   | 100    |
| NULL  | 0      |
| 2340  | 2340   |
+-------+--------+
7 rows in set (0.00 sec)

補足:IFNULL関数やCOALESCE関数も使える

CASE文以外にも、MySQLにはNULLを別の値に置き換えるための便利な関数が用意されています。

  • IFNULL関数SELECT Price, IFNULL(Price, 0) AS Result FROM DemoTable703;
  • COALESCE関数SELECT Price, COALESCE(Price, 0) AS Result FROM DemoTable703;

どちらも最初に見つかったNULL以外の値を返すため、単純な置き換えであればCASE文より簡潔に書けます。ただし、複数の条件分岐が必要な場合はCASE文の方が柔軟に対応できるので、状況に応じて使い分けるとよいでしょう。

  1. MySQLで空白のカラム値をNULLとして扱う方法

    MySQLでは、空文字列()や空白だけが入力されたデータはNULLとは異なる値として保存されます。そのため、データの整合性を保つために、空白のフィールドをNULLに置き換えたいケースはよくあります。本記事では、実際のサンプルを使いながら、空白のカラム値をNULLとして更新する方法を解説します。 1. サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable1362 -> ( -> ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> C

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

    MySQLでは、IF()関数を活用することで、カラムの値がNULLかどうかを判定し、その結果に応じて新しい列に任意のカスタムテキストを表示できます。本記事では、実際のサンプルコードとともにその手順をわかりやすく解説します。1. サンプルテーブルを作成するまず、学生名を格納するシンプルなテーブルを作成しましょう。mysql> create table DemoTable1953 ( StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec)2. テストデータを挿入する次に、INSERT文を使ってレコ