MySQLで「MONTH_JAN」のようなアンダースコアを含む単語に基づいてレコードを削除する方法
MySQLで「MONTH_JAN」のようにアンダースコア(_)を含む特定の単語に一致するレコードを削除したい場合は、LIKE演算子を使用します。この記事では、実際のサンプルコードとともに手順をわかりやすく解説します。
1. サンプルテーブルを作成する
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(40),
BornMonth varchar(40)
);
Query OK, 0 rows affected (0.47 sec)2. レコードを挿入する
INSERT文を使って、テーブルにいくつかのデータを登録します。
mysql> insert into DemoTable(Name,BornMonth) values('Chris','MONTH_DEC');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name,BornMonth) values('Bob','MONTH_JAN');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name,BornMonth) values('Mike','MONTH_FEB');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name,BornMonth) values('David','MONTH_JAN');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name,BornMonth) values('Carol','MONTH_MARCH');
Query OK, 1 row affected (0.16 sec)3. 登録されたレコードを確認する
SELECT文で、現在テーブルに格納されているすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が得られます。
+----+-------+-------------+ | Id | Name | BornMonth | +----+-------+-------------+ | 1 | Chris | MONTH_DEC | | 2 | Bob | MONTH_JAN | | 3 | Mike | MONTH_FEB | | 4 | David | MONTH_JAN | | 5 | Carol | MONTH_MARCH | +----+-------+-------------+ 5 rows in set (0.00 sec)
4. 特定の単語に一致するレコードを削除する
ここで本題の削除クエリです。LIKE演算子とワイルドカード「%」を組み合わせることで、「BornMonth」カラムに「MONTH_JAN」という文字列を含むレコードだけをまとめて削除できます。
mysql> delete from DemoTable where BornMonth LIKE '%MONTH_JAN%'; Query OK, 2 rows affected (0.18 sec)
この例では、「Bob」と「David」の2件が削除対象となりました。
5. 削除後のテーブルを確認する
再度SELECT文を実行して、正しく削除されたかどうかを確認します。
mysql> select *from DemoTable;
実行結果は以下のとおりです。「MONTH_JAN」を含む2件のレコードが消え、残り3件のみが表示されています。
+----+-------+-------------+ | Id | Name | BornMonth | +----+-------+-------------+ | 1 | Chris | MONTH_DEC | | 3 | Mike | MONTH_FEB | | 5 | Carol | MONTH_MARCH | +----+-------+-------------+ 3 rows in set (0.00 sec)
補足:アンダースコアはワイルドカードとして扱われる点に注意
LIKEパターンにおいて、アンダースコア「_」は任意の1文字に一致するワイルドカードとして機能します。そのため、'%MONTH_JAN%'は「MONTH_JAN」だけでなく、「MONTHXJAN」や「MONTH1JAN」などもマッチしてしまう可能性があります。
文字としてのアンダースコアそのものに厳密に一致させたい場合は、バックスラッシュでエスケープして'%MONTH\_JAN%'のように記述してください。
-
MySQLでテーブル内の重複レコードをすべて削除する方法
MySQLのテーブルから重複レコードを削除したい場合、DELETEコマンドを使用します。この記事では、実際にテーブルを作成し、重複データを挿入したうえで、DELETE文を使って重複レコードを削除する手順を具体的に解説します。 1. テーブルの作成 まず、練習用のテーブル「DuplicateDeleteDemo」を作成しましょう。このテーブルは、id(整数型)とname(可変長文字列)の2つのカラムを持つシンプルな構造です。 mysql> create table DuplicateDeleteDemo -> ( -> id int, -> name
-
JavaでMySQLデータベースのデータを削除する方法|DELETE文の使い方を徹底解説
MySQLデータベースからデータを削除するには、DELETEコマンドを使用します。まずは基本となる構文を確認しておきましょう。 DELETE文の基本構文 delete from テーブル名 where 条件; WHERE句で条件を指定すると、該当するレコードだけをピンポイントで削除できます。逆に条件を指定しなかった場合、テーブル内の全データが削除されてしまうため、実行前には必ず条件を確認してください。 本記事では、JavaプログラムからMySQLデータベースのデータを削除する具体的な手順を解説します。はじめにサンプル用のテーブルを作成し、テストデータを挿入していきましょう。 サンプルテーブルの