MySQLでテーブル内の空(EMPTY)・NULL列の件数を調べる方法
はじめに
MySQLでは、CASE式とSUM関数、UNION ALLを組み合わせることで、テーブル内に存在するNULL値と空文字列('')それぞれの件数を一度に集計できます。本記事では、サンプルテーブルを作成しながら、具体的な手順を解説します。
1. サンプルテーブルの作成
まず、以下のようにCREATE TABLE文でテーブルを作成します。
mysql> create table DemoTable781 ( Name varchar(100) ); Query OK, 0 rows affected (0.66 sec)
2. テストデータの挿入
続いて、INSERT文を使って空文字列とNULL値が混在するデータを登録します。
mysql> insert into DemoTable781 values('');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable781 values('Chris');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable781 values('');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable781 values(null);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable781 values(null);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable781 values('');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable781 values(null);
Query OK, 1 row affected (0.28 sec)3. 登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable781;
実行すると、次のような結果が出力されます。
+-------+ | Name | +-------+ | | | Chris | | | | NULL | | NULL | | | | NULL | +-------+ 7 rows in set (0.00 sec)
このように、合計7件のうち「Chris」以外はすべて空文字列またはNULLになっています。
4. 空文字列とNULLの件数を集計するクエリ
それでは、NULL値と空文字列それぞれの件数を取得するクエリを見ていきましょう。CASE式で条件に該当する場合に1を返し、SUM関数で合計することで件数を求めています。さらにUNION ALLで2つの集計結果を縦に連結しています。
mysql> (select SUM(CASE when Name IS NULL THEN 1 ELSE 0 END) AS NullCountAndEmptyCount from DemoTable781) UNION ALL (select SUM(CASE when Name='' THEN 1 ELSE 0 END) AS NullCountAndEmptyCount from DemoTable781);
このクエリを実行すると、以下の出力が得られます。
+------------------------+ | NullCountAndEmptyCount | +------------------------+ | 3 | | 3 | +------------------------+ 2 rows in set (0.00 sec)
実行結果の読み方
- 1行目:Name列がNULLであるレコードの件数 → 3件
- 2行目:Name列が空文字列('')であるレコードの件数 → 3件
このように、IS NULL条件と '' (空文字列)比較をそれぞれCASE式で判定することで、両者を明確に区別した上で件数を把握できます。
まとめ
MySQLでテーブル内のNULL値や空文字列の件数を調べたい場合は、「SUM(CASE WHEN 条件 THEN 1 ELSE 0 END)」というパターンが有効です。UNION ALLを併用すれば、複数の条件別の集計を1つのクエリでまとめて取得できるため、データ品質チェックやクリーニング作業の際にぜひ活用してください。
-
JavaでMySQLテーブルのカラム数を取得・カウントする方法
MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable -> ( -> St
-
MySQLで特定の日付のレコード数をカウントする方法
MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946 ( ShippingDate date ); Quer