MySQLのLIKE演算子で列内の姓を検索する基本的なクエリ
MySQLでは、LIKE演算子を使用することで、名前が格納された列から特定の姓を含むレコードを簡単に検索できます。この記事では、実際にテーブルを作成し、データを挿入したうえで、姓を部分一致検索する手順を解説します。
1. テーブルの作成
まずはサンプル用のテーブルを作成しましょう。ここでは、顧客名(CustomerName)と年齢(CustomerAge)を持つテーブルを定義します。
mysql> create table DemoTable -> ( -> CustomerName varchar(100), -> CustomerAge int -> ); Query OK, 0 rows affected (0.77 sec)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを追加します。
mysql> insert into DemoTable values('John Doe',34);
Query OK, 1 row affected (1.32 sec)
mysql> insert into DemoTable values('David Miller',24);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Bob Doe',27);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Carol Taylor',29);
Query OK, 1 row affected (0.13 sec)
3. 登録データの確認
SELECT文を実行して、テーブルに登録されたすべてのレコードを確認しておきましょう。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のように4件のレコードが表示されます。
+--------------+-------------+ | CustomerName | CustomerAge | +--------------+-------------+ | John Doe | 34 | | David Miller | 24 | | Bob Doe | 27 | | Carol Taylor | 29 | +--------------+-------------+ 4 rows in set (0.00 sec)
4. 姓を検索するクエリ
それが本題である、列に含まれる姓を検索するクエリです。WHERE句の中でLIKE演算子を使い、パターンとして'%Doe%'を指定します。「%」はワイルドカードと呼ばれ、任意の0文字以上の文字列に一致するため、「Doe」という文字列をどこかに含むすべてのレコードが対象になります。
mysql> select *from DemoTable where CustomerName LIKE '%Doe%';
出力結果
このクエリを実行すると、姓に「Doe」を含むレコードのみが抽出され、次のような結果が得られます。
+--------------+-------------+ | CustomerName | CustomerAge | +--------------+-------------+ | John Doe | 34 | | Bob Doe | 27 | +--------------+-------------+ 2 rows in set (0.00 sec)
まとめ
このように、LIKE演算子とワイルドカード「%」を組み合わせることで、氏名がひとつの列にまとめて格納されている場合でも、姓や名などの一部文字列だけで柔軟に検索を行えます。なお、先頭一致で検索したい場合は「'Doe%'」、後方一致なら「'%Doe'」のようにパターンを変えることで、さまざまな検索条件に対応可能です。
-
【MySQL】名前列の最後のスペースより左側の文字列をすべて抽出する方法
名前データが格納された列から、フルネームのうち「最後のスペースより左側」の部分だけを取り出したい場面はよくあります。例えば、姓名が混在するデータから名(ファーストネーム)部分を抽出するようなケースです。MySQLでは LEFT()、LENGTH()、LOCATE()、REVERSE() の各関数を組み合わせることで、この処理を簡単に実現できます。 1. サンプルテーブルの作成 まず、名前を格納するテーブルを作成します。 mysql> create table DemoTable1939 ( F
-
MySQLでカラム内の値を検索するには?REGEXP_INSTR関数の使い方
MySQLでカラム内の値を検索する方法MySQLでは、REGEXP_INSTR()関数を使うことで、指定したカラムに特定の文字列が含まれているかどうかを正規表現ベースで判定できます。マッチした場合は「1」、マッチしなかった場合は「0」を返すため、WHERE句と組み合わせることで柔軟な部分一致検索が可能になります。基本構文構文は以下の通りです。select *from yourTableName where REGEXP_INSTR(yourColumnName,yourSearchValue);サンプルテーブルの作成上記の構文を理解するために、まずテーブルを作成しましょう。mysql>