MySQLのLIKE句とORを組み合わせて複数の値に一致するレコードを取得する方法
MySQLで複数の値に該当するレコードを取得したい場合は、LIKE句とOR演算子を組み合わせるのが基本的な方法です。
基本構文
複数の値を持つフィールドを抽出するには、LIKE条件をORで連結して記述します。
select *from yourTableName where yourColumnName like '%AnyStringValue' or yourColumnName like '%AnyStringValue' or yourColumnName like '%AnyStringValue' .......N;
実際にサンプルテーブルを使いながら動作を確認してみましょう。
サンプルテーブルの作成
まず、以下のようにテーブルを作成します。
mysql> create table LikeDemo
-> (
-> Hobby varchar(200)
-> );
Query OK, 0 rows affected (1.71 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルにレコードを挿入していきます。
mysql> insert into LikeDemo values('Reading Book');
Query OK, 1 row affected (0.13 sec)
mysql> insert into LikeDemo values('Playing Cricket Match');
Query OK, 1 row affected (0.16 sec)
mysql> insert into LikeDemo values('Playing Hockey Match');
Query OK, 1 row affected (0.27 sec)
mysql> insert into LikeDemo values('Reading Novel');
Query OK, 1 row affected (0.14 sec)
mysql> insert into LikeDemo values('Swimming');
Query OK, 1 row affected (0.10 sec)登録済みレコードの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from LikeDemo;
実行結果は以下の通りです。
+-----------------------+
| Hobby |
+-----------------------+
| Reading Book |
| Playing Cricket Match |
| Playing Hockey Match |
| Reading Novel |
| Swimming |
+-----------------------+
5 rows in set (0.00 sec)
複数のLIKE条件でデータを取得するクエリ
ここで、「Cricket」と「Reading」という2つのキーワードのどちらかに一致するレコードを取得したいとします。その場合は、以下のようにLIKE句をORでつなげて記述します。
mysql> select *from LikeDemo where Hobby like '%Cricket%' or Hobby like '%Reading%';
実行結果は以下の通りです。
+-----------------------+
| Hobby |
+-----------------------+
| Reading Book |
| Playing Cricket Match |
| Reading Novel |
+-----------------------+
3 rows in set (0.00 sec)
このように、LIKE句をORで組み合わせることで、複数のキーワードのいずれかに部分一致するレコードを柔軟に抽出できます。ワイルドカード「%」の位置を変えれば、前方一致・後方一致・部分一致なども自由に制御可能です。なお、検索条件が非常に多くなる場合は、REGEXP演算子などを使うとクエリをより簡潔にまとめられることもあります。
-
MySQLのGROUP_CONCATで各値を引用符付きで連結する方法
MySQLでは、CONCAT()関数とGROUP_CONCAT()関数を組み合わせることで、各値をシングルクォート()で囲んだ状態で連結した文字列を簡単に取得できます。例えば、IN句に渡すためのIDリストを作成したい場合などに非常に便利なテクニックです。基本構文SELECT GROUP_CONCAT(CONCAT(, yourColumnName, )) AS anyVariableName FROM yourTableName;CONCAT()の中でカラム名をシングルクォート4つ()で挟むことで、各値が引用符で囲まれた形式になります。動作確認用テーブルの作成それでは、実際に構文を理解するため
-
PHPとMySQLでブール値を扱うには?BOOL・BOOLEAN・TINYINT(1)の違いと使い方
本記事では、MySQL 8.0.12を使用して、ブール(Boolean)値の正しい取り扱い方を解説します。まず、使用しているMySQLのバージョンを確認しておきましょう。 mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.12 | +-----------+ 1 row in set (0.00 sec) MySQLにおけるブール値の基本:BOOL・BOOLEAN・TINYINT(1) MySQLでブール値を扱うには、BOOL、BOOLEAN、またはTINYINT(1)のいずれかを使用