MySQLで空白行やNULLの行を削除する方法【DELETE文の使い方】
MySQLでテーブル内の空白行を削除したい場合は、DELETEコマンドを使用します。この記事では、空白(空文字列)の行だけでなく、NULLが格納された行もまとめて削除する方法を、実際のSQL例とともにわかりやすく解説します。
基本構文
空白行およびNULL行を削除するための基本構文は以下の通りです。
delete from yourTableName where yourColumnName='' OR yourColumnName IS NULL;
上記の構文では、yourColumnNameが空文字列('')である行と、NULLである行の両方が削除されます。OR条件を使うことで、どちらのケースにも対応できるのがポイントです。
動作確認用のテーブルを作成する
それでは、実際に動きを確認してみましょう。まずはサンプル用のテーブルを作成します。
mysql> create table deleteRowDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20)
-> );
Query OK, 0 rows affected (0.57 sec)このテーブルには、自動採番されるIdカラムと、生徒名を格納するStudentNameカラムがあります。
テストデータを挿入する
次に、INSERTコマンドを使ってレコードを挿入します。ここでは、通常の名前データに加えて、空文字列('')やNULLのデータも意図的に混ぜています。
mysql> insert into deleteRowDemo(StudentName) values('John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into deleteRowDemo(StudentName) values('');
Query OK, 1 row affected (0.18 sec)
mysql> insert into deleteRowDemo(StudentName) values('');
Query OK, 1 row affected (0.14 sec)
mysql> insert into deleteRowDemo(StudentName) values(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> insert into deleteRowDemo(StudentName) values('Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into deleteRowDemo(StudentName) values('Bob');
Query OK, 1 row affected (0.14 sec)
mysql> insert into deleteRowDemo(StudentName) values('');
Query OK, 1 row affected (0.18 sec)
mysql> insert into deleteRowDemo(StudentName) values('David');
Query OK, 1 row affected (0.35 sec)挿入したデータを確認する
SELECT文ですべてのレコードを表示して、現在の状態を確認しましょう。
mysql> select *from deleteRowDemo;
実行結果は以下の通りです。
+----+-------------+ | Id | StudentName | +----+-------------+ | 1 | John | | 2 | | | 3 | | | 4 | NULL | | 5 | Carol | | 6 | Bob | | 7 | | | 8 | David | +----+-------------+ 8 rows in set (0.00 sec)
ご覧の通り、Id 2・3・7の行には空文字列が、Id 4の行にはNULLが格納されています。これら4行が削除対象となります。
空白行とNULL行を削除する
ここで、冒頭で紹介した構文を使って、空白行とNULL行をまとめて削除します。
mysql> delete from deleteRowDemo where StudentName='' OR StudentName IS NULL; Query OK, 4 rows affected (0.18 sec)
「4 rows affected」と表示されており、4行が正常に削除されたことがわかります。
削除後のテーブルを確認する
最後に、もう一度SELECT文を実行して、削除後の状態を確認しましょう。
mysql> select *from deleteRowDemo;
実行結果は以下の通りです。
+----+-------------+ | Id | StudentName | +----+-------------+ | 1 | John | | 5 | Carol | | 6 | Bob | | 8 | David | +----+-------------+ 4 rows in set (0.00 sec)
空白行とNULL行がすべて取り除かれ、有効なデータだけが残っていることが確認できました。
まとめ
MySQLで空白行を削除する際は、DELETE文のWHERE句で「カラム名 = ''」と「カラム名 IS NULL」をOR条件で組み合わせるのが基本です。NULLの判定には= NULLではなくIS NULLを使う必要がある点に注意してください。この方法を覚えておけば、データクレンジングやメンテナンス作業がスムーズに行えます。
-
Excelで空白行を削除する3つの方法|マクロ不要で誰でもできる簡単テクニック
Excelを使っていると、データの中に空白行が混ざってしまうことはよくあります。どんな種類のデータを扱っていても、ファイルのあちこちに空白行が散在しているケースは少なくありません。 行数が数千行に及ぶ場合、空白行を手作業で一つずつ削除するのは非常に手間がかかり、事実上不可能と言えます。ネット上でよく紹介されている対処法はExcelマクロを使うものですが、マクロに慣れていない人にとってはハードルが高く、うまく動作しない場合に自分のファイルに合わせてコードを修正するのも容易ではありません。 この記事では、マクロを使わずにExcelの空白行を削除できる複数の方法と、それぞれのメリット・デメリットを詳
-
Excelで空白行を削除する6つの方法|手動からVBAまで徹底解説
大きなスプレッドシートを扱っていると、見やすさや理解しやすさのために、意図的に空白行を挿入することがよくあります。多くの人にとって空白行は便利なものですが、人によっては作業の妨げになり、非常に煩わしく感じることもあるでしょう。また、Excelソフトの不具合によって空白行が生成されるケースもあります。さらに、Excelファイルの転送時や社内データベースからのデータエクスポート時などにも空白行が発生することがあります。この記事では、Excelで空白行を削除するためのさまざまな方法を、初心者の方にもわかりやすく解説します。方法1:空白行を手動で選択して削除する最もシンプルな方法は、空白行を手動で選択