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

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%'のように記述してください。

  1. MySQLでテーブル内の重複レコードをすべて削除する方法

    MySQLのテーブルから重複レコードを削除したい場合、DELETEコマンドを使用します。この記事では、実際にテーブルを作成し、重複データを挿入したうえで、DELETE文を使って重複レコードを削除する手順を具体的に解説します。 1. テーブルの作成 まず、練習用のテーブル「DuplicateDeleteDemo」を作成しましょう。このテーブルは、id(整数型)とname(可変長文字列)の2つのカラムを持つシンプルな構造です。 mysql> create table DuplicateDeleteDemo -> ( -> id int, -> name

  2. JavaでMySQLデータベースのデータを削除する方法|DELETE文の使い方を徹底解説

    MySQLデータベースからデータを削除するには、DELETEコマンドを使用します。まずは基本となる構文を確認しておきましょう。 DELETE文の基本構文 delete from テーブル名 where 条件; WHERE句で条件を指定すると、該当するレコードだけをピンポイントで削除できます。逆に条件を指定しなかった場合、テーブル内の全データが削除されてしまうため、実行前には必ず条件を確認してください。 本記事では、JavaプログラムからMySQLデータベースのデータを削除する具体的な手順を解説します。はじめにサンプル用のテーブルを作成し、テストデータを挿入していきましょう。 サンプルテーブルの