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

MySQLのSELECT文にワイルドカードを追加する方法(CONCAT関数の活用)

MySQLでSELECT文にワイルドカードを追加するには?

MySQLで部分一致検索を行いたい場合、CONCAT()関数を使ってLIKE句にワイルドカード(%)を動的に追加する方法が便利です。値の前後に「%」を連結することで、文字列の一部分だけでも検索できるようになります。

基本構文

ワイルドカードを追加して検索する場合、基本的な構文は以下の通りです。

SELECT * FROM テーブル名 WHERE カラム名 LIKE CONCAT('%', 検索値, '%');

この書き方により、指定した値がカラム内のどこに含まれていても(前方・中間・後方)ヒットするようになります。

サンプルテーブルの作成

まず、動作を確認するためのテーブルを作成しましょう。

mysql> create table demo48
-> (
-> id int not null auto_increment primary key,
-> name varchar(20)
-> );
Query OK, 0 rows affected (0.70 sec)

テストデータの挿入

次に、INSERTコマンドを使ってサンプルデータを登録します。

mysql> insert into demo48(name) values('John Smith');
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo48(name) values('John Doe');
Query OK, 1 row affected (0.12 sec)

mysql> insert into demo48(name) values('Adam Smith');
Query OK, 1 row affected (0.23 sec)

mysql> insert into demo48(name) values('David Miller');
Query OK, 1 row affected (0.14 sec)

mysql> insert into demo48(name) values('Chris Brown');
Query OK, 1 row affected (0.11 sec)

登録データの確認

SELECT文でテーブルの中身を表示してみましょう。

mysql> select *from demo48;

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

+----+--------------+
| id | name         |
+----+--------------+
|  1 | John Smith   |
|  2 | John Doe     |
|  3 | Adam Smith   |
|  4 | David Miller |
|  5 | Chris Brown  |
+----+--------------+
5 rows in set (0.00 sec)

ワイルドカードを使った部分一致検索の実行

ここで、「Smith」という文字列を含むレコードを抽出してみます。CONCAT()関数で「%」を前後に付けてLIKE句に渡すのがポイントです。

mysql> select *from demo48 where name like concat('%','Smith','%');

実行すると、以下のように該当レコードのみが取得されます。

+----+------------+
| id | name       |
+----+------------+
|  1 | John Smith |
|  3 | Adam Smith |
+----+------------+
2 rows in set (0.00 sec)

まとめ

このように、CONCAT()関数とLIKE句を組み合わせることで、SELECT文に柔軟にワイルドカードを追加できます。検索値の前後どちらかにだけ「%」を付けると前方一致・後方一致の検索も可能です。

  • CONCAT('%', 値, '%'):中間一致(あいまい検索)
  • CONCAT(値, '%'):前方一致
  • CONCAT('%', 値):後方一致

ユーザー名や氏名などの部分一致検索を実装したい際に、ぜひ活用してください。

  1. MySQLでSELECTクエリを使用してデータを挿入(INSERT)する方法

    MySQLでは、INSERT文とSELECTクエリを組み合わせることで、テーブルにデータを挿入することができます。通常、SELECTは既存のテーブルからデータを取得するために使われますが、値を直接指定してINSERTを実行する際にも活用できる便利な手法です。基本構文SELECTクエリを使用してINSERTを実行する場合の構文は以下の通りです。insert into yourTableName(yourColumnName1,yourColumnName2,yourColumnName3,...N) select yourValue1,yourValue2,yourValue3,......N;

  2. MySQLでGROUP BYを使ってグループ化し合計(SUM)を求める方法

    MySQLで合計を求めるには、集計関数SUM()を使用します。さらにGROUP BY句と組み合わせることで、特定のカラムごとにデータをグループ化し、それぞれのグループの合計値を取得できます。この記事では、商品名ごとに「数量 × 価格」の合計を求める例を通じて、GROUP BYとSUM()の基本的な使い方を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。 mysql> create table DemoTable -> ( -> ProductName varchar(20), -> ProductQuant