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

MySQLでCURDATE()とLIKE句を使った部分一致検索の方法

MySQLにはCONTAINS()という名前の関数は存在しません。そのため、現在の日付(CURDATE())に関連する文字列で部分一致検索を行いたい場合は、CONCAT()関数とLIKE句を組み合わせる方法が有効です。

本記事では、実際にサンプルテーブルを作成しながら、その手順を順番に解説していきます。

現在の日付を確認する

まず、CURDATE()関数を使って現在の日付を取得してみましょう。

mysql> select curdate();

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

+------------+
| curdate()  |
+------------+
| 2019-11-28 |
+------------+
1 row in set (0.00 sec)

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

次に、検証用のテーブルを作成します。

mysql> create table DemoTable1803
    (
    Name varchar(20),
    JoiningYear varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

レコードを挿入する

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

mysql> insert into DemoTable1803 values('Chris','2020/2017');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1803 values('David','2017/2018');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1803 values('Adam','2018/2019');
Query OK, 1 row affected (0.00 sec)

登録されたレコードを確認する

SELECT文ですべてのレコードを表示して、データが正しく登録されているか確認しましょう。

mysql> select * from DemoTable1803;

実行結果:

+-------+-------------+
| Name  | JoiningYear |
+-------+-------------+
| Chris | 2020/2017   |
| David | 2017/2018   |
| Adam  | 2018/2019   |
+-------+-------------+
3 rows in set (0.00 sec)

CURDATE()を使った部分一致検索のクエリ

ここが本題です。以下のクエリでは、CONCAT()で生成した検索パターンをLIKE句に渡すことで、「現在の年」を含むレコードだけを抽出しています。

mysql> select * from DemoTable1803 where JoiningYear like concat('%', YEAR(CURDATE()), '%');

実行結果:

+------+-------------+
| Name | JoiningYear |
+------+-------------+
| Adam | 2018/2019   |
+------+-------------+
1 row in set (0.00 sec)

クエリのポイント解説

このクエリが機能する仕組みは以下の通りです。

  • YEAR(CURDATE()):現在の日付から「年」の部分だけを取り出します(例:2019)。
  • concat('%', ..., '%'):年の前後にワイルドカード「%」を連結し、部分一致用の検索パターンを作成します。
  • LIKE句:作成したパターンとJoiningYearカラムの値を比較し、一致するレコードのみを返します。

上記の例では現在の年が「2019」であるため、JoiningYearに「2019」を含むAdamのレコードのみが抽出されました。このように、MySQLではCONTAINS()の代わりにCONCAT()とLIKE句を組み合わせることで、現在の日付に応じた動的な部分一致検索を簡単に実現できます。

  1. MySQLクエリでCASE条件を使ってカウントする方法

    MySQLでは、CASE WHENを活用し、COUNT()関数の中にCASE条件を設定することで、特定の条件に一致するレコードだけを数えることができます。この仕組みが成り立つのは、COUNT()関数がNULL値を無視するためです。条件に合わない場合にNULLを返すことで、そのレコードはカウント対象から除外されます。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。 ); Query OK, 0 rows affected (0.61 sec)2. レコードの挿入続いて、insertコマンドを使ってテーブルにデータを登録します。mysql> insert into D

  2. MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説

    MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId