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

MySQLのNOT LIKE演算子で特定のレコードを除外する方法|テーブルデータのフィルタリング条件

MySQLでテーブルから特定のレコードだけを除外して取得したい場合、NOT LIKE演算子を使用すると簡単に実現できます。この記事では、サンプルテーブルの作成からデータの挿入、そしてNOT LIKE演算子を使ったフィルタリングまで、具体的な手順を解説します。

1. サンプルテーブルを作成する

まずは動作確認用のテーブルを作成しましょう。

mysql> create table DemoTable
    -> (
    -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName varchar(20),
    -> StudentAdmissionYear varchar(20)
    -> );
Query OK, 0 rows affected (1.22 sec)

ここでは、学生ID(StudentId)、氏名(StudentName)、入学年度(StudentAdmissionYear)の3つのカラムを持つ「DemoTable」を作成しました。StudentIdは自動採番される主キーとして設定しています。

2. テーブルにレコードを挿入する

続いて、INSERT文を使ってテーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Chris','2017');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('David','2015');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Bob','2019');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Carol','2015');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(StudentName,StudentAdmissionYear) values('Sam','2018');
Query OK, 1 row affected (0.12 sec)

5人分の学生データを挿入しました。このうち、入学年度が「2015」のレコードが2件含まれている点に注目してください。

3. テーブルの全レコードを確認する

SELECT文を実行して、現在テーブルに格納されているすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下のとおりです。

+-----------+-------------+----------------------+
| StudentId | StudentName | StudentAdmissionYear |
+-----------+-------------+----------------------+
|         1 | Chris       | 2017                |
|         2 | David       | 2015                |
|         3 | Bob         | 2019                |
|         4 | Carol       | 2015                |
|         5 | Sam         | 2018                |
+-----------+-------------+----------------------+
5 rows in set (0.00 sec)

4. NOT LIKE演算子で特定のレコードを除外する

それが本題です。特定の条件に該当するレコードを結果から取り除くには、WHERE句とNOT LIKE演算子を組み合わせます。以下のクエリでは、入学年度が「2015」以外のレコードのみを抽出しています。

mysql> select *from DemoTable
    -> where StudentAdmissionYear not like '%2015%';

実行すると、次のような出力が得られます。StudentAdmissionYearが「2015」のレコード(DavidとCarol)が除外されていることがわかります。

+-----------+-------------+----------------------+
| StudentId | StudentName | StudentAdmissionYear |
+-----------+-------------+----------------------+
|         1 | Chris       | 2017                |
|         3 | Bob         | 2019                |
|         5 | Sam         | 2018                |
+-----------+-------------+----------------------+
3 rows in set (0.04 sec)

まとめ

このように、NOT LIKE '%パターン%'を使うことで、指定した文字列パターンに一致しないレコードだけを柔軟に抽出できます。%は任意の文字列にマッチするワイルドカードなので、部分一致での除外にも対応可能です。なお、完全一致の値だけで除外したい場合は、よりシンプルに<>(または!=)演算子を使うことも検討するとよいでしょう。

  1. JavaでMySQLデータベースのテーブルから最後のレコードを取得する方法

    MySQLデータベースからデータを取得するには、JavaのexecuteQuery()メソッドを使用します。本記事では、テーブルに登録された最後のレコード(最新の1件)をJavaプログラムで取得する手順を、サンプルコード付きでわかりやすく解説します。1. MySQLデータベースにテーブルを作成するまず、MySQLデータベース上にテーブルを用意します。ここでは「sample」データベースに、以下のようなテーブルを作成します。mysql> create table javaGetDataDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRI

  2. Javaを使ってMySQLテーブルにレコードを挿入する方法

    はじめに本記事では、JavaのJDBC(Java Database Connectivity)を使用して、MySQLデータベースのテーブルにレコードを挿入する手順を解説します。まずテーブルを作成し、その後Javaプログラムからデータを登録するまでの一連の流れを見ていきましょう。1. MySQLでテーブルを作成するまず、データを挿入するためのテーブルを作成します。以下はMySQLでテーブルを作成するクエリです。mysql> create table DemoTable(   Id int,   Name varchar(30),&