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

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を含む複数のレコードを挿入します。

mysql> insert into DemoTable1963 values(20);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1963 values(NULL);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1963 values(99);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1963 values(49);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1963 values(NULL);
Query OK, 1 row affected (0.00 sec)

3. 現在のレコードを確認する

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

mysql> select * from DemoTable1963;

実行結果は次の通りです。Counter列にNULLが2件含まれていることがわかります。

+---------+
| Counter |
+---------+
|      20 |
|    NULL |
|      99 |
|      49 |
|    NULL |
+---------+
5 rows in set (0.00 sec)

4. NULL値を1に更新するクエリ

ここが本題です。NULL値を1に変換するには、WHERE句でNULLのレコードを絞り込み、IFNULL関数を使って値を設定します。

mysql> update DemoTable1963 set Counter=IFNULL(Counter,0)+1 where Counter IS NULL;
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2 Warnings: 0

このクエリのポイントIFNULL(Counter,0)+1 の部分です。IFNULL関数は、第1引数がNULLの場合に第2引数の値を返します。つまり、CounterがNULLなら0を返し、そこに1を加算することで結果的に「1」が代入される仕組みです。

5. 更新結果を確認する

もう一度テーブルの内容を確認しましょう。

mysql> select * from DemoTable1963;

実行結果:

+---------+
| Counter |
+---------+
|      20 |
|       1 |
|      99 |
|      49 |
|       1 |
+---------+
5 rows in set (0.00 sec)

このように、NULLだったレコードがすべて「1」に更新されました。

補足:データを変更せずに表示だけ置き換えたい場合

実際のデータは更新せず、取得時だけNULLを1として表示したい場合は、SELECT文でIFNULLを使う方法が便利です。

mysql> select IFNULL(Counter, 1) as Counter from DemoTable1963;

用途に応じて、UPDATEでの恒久対応とSELECTでの表示置換を使い分けるとよいでしょう。

  1. MySQLでNOT NULLの値に対して1を設定する方法(IF関数とIS NOT NULLの使い方)

    MySQLでNOT NULLの値に1を設定するにはMySQLでは、IS NOT NULL演算子とIF()関数を組み合わせることで、値がNULLでない場合に「1」、NULLの場合に「0」を返すことができます。データの存在チェックやフラグ管理など、さまざまな場面で活用できる便利なテクニックです。基本構文NOT NULLかどうかを判定して1を設定する基本構文は以下のとおりです。select if( is not NULL,1,0) as anyAliasName;実際に動作するクエリを見てみましょう。mysql> select if( is not NULL,1,0);このクエリを実行すると、

  2. Javaを使用してMySQLテーブルの値を表示する方法

    MySQLデータベースのテーブル値をJavaで表示するには、ResultSetの概念を利用します。データベースへの接続には、MySQL JDBCドライバーを使用します。テーブルの作成まず、サンプル用のテーブルを作成しましょう。mysql> create table demo87    -> (    -> name varchar(20),    -> age int    -> )