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句を組み合わせることで、現在の日付に応じた動的な部分一致検索を簡単に実現できます。
-
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
-
MySQLビュー(VIEW)にWHERE句を使う方法をわかりやすく解説
MySQLビューでWHERE句を使用する方法MySQLでは、作成済みのビュー(VIEW)に対して、通常のテーブルと同じようにWHERE句を指定してデータを絞り込むことができます。基本となる構文は以下の通りです。select * from yourViewName where yourColumnName=yourValue;それでは、実際にサンプルを使って手順を確認していきましょう。1. サンプルテーブルを作成するまず、学生情報を格納するテーブルを作成します。mysql> create table DemoTable1432 -> ( -> StudentId