MySQLのワイルドカードの使い方
MySQLのLIKEワイルドカードは、クエリ内で文字列をあいまい検索するために使用できます。2つのワイルドカードを使用します。
- パーセント記号(%)は0 個以上の文字を表します。
- 下線(_):一文字を表します。
例をいくつか紹介しましょう。
- “abc” で始まる文字列を探す:
SELECT * FROM table_name WHERE column_name LIKE 'abc%';
- 「xyz」で終わる文字列を検索する:
SELECT * FROM table_name WHERE column_name LIKE '%xyz';
- 「def」を含む文字列を探す。
SELECT * FROM table_name WHERE column_name LIKE '%def%';
- 「a」で始まり、「z」で終わり、間に2 文字ある文字列を検索する
SELECT * FROM table_name WHERE column_name LIKE 'a__z';
大文字小文字が区別されるのでLIKEワイルドカードを使用する場合、大文字小文字を区別せずに一致させる場合は、LOWER()またはUPPER()関数を使用します。
また、LIKEモードで「%」や「_」を通常の文字として利用する場合は、エスケープ文字(バックスラッシュ)を使用できます。
SELECT * FROM table_name WHERE column_name LIKE 'abc\%xyz' ESCAPE '\';
「abc%xyz」にマッチした文字列
LIKE 演算子は全テーブルスキャンを引き起こすので、大規模テーブルではパフォーマンスに影響が出ることがあります。単純な前方一致のみが必要であれば、インデックスの使用を検討してください。