データベースからの効率的なデータ抽出方法について、初心者にもわかりやすく解説します。WHERE句やJOINを使った実践的な抽出テクニックとは?
SQLで含む文字列を検索するLIKE句とワイルドカードの使い方完全ガイド
SQLで文字列検索を行うLIKE句の基本から応用まで、実践的なコード例を交えて解説します。データベース操作で避けては通れない文字列検索、あなたは使いこなせていますか?
データベースから特定の文字列を含むレコードを検索する場合、LIKE句は非常に便利なツールです。以下のような基本的な使い方があります:
-- 完全一致検索
SELECT * FROM テーブル名 WHERE カラム名 LIKE '検索文字'
-- 部分一致検索
SELECT * FROM テーブル名 WHERE カラム名 LIKE '%検索文字%'
ワイルドカードを使用することで、より柔軟な検索が可能になります:
ワイルドカード | 意味 | 使用例 |
---|---|---|
% | 0文字以上の任意の文字列 | 'SQL%'(SQLで始まる) |
_ | 任意の1文字 | 'SQL_'(SQLの後に1文字) |
[^] | 指定文字の除外 | '[^a-c]%'(a-c以外で始まる) |
LIKE句を使用する際は、以下のパフォーマンス最適化を考慮することが重要です:
-- インデックスを活用できる前方一致検索
SELECT * FROM ユーザー WHERE 名前 LIKE '佐藤%'
-- インデックスを活用できない中間一致検索
SELECT * FROM ユーザー WHERE 名前 LIKE '%佐藤%'
特殊文字を含む検索を行う場合は、ESCAPE句を使用します:
-- %を含む文字列を検索する場合
SELECT * FROM 商品
WHERE 商品名 LIKE '%30!%%' ESCAPE '!'
-- _を含む文字列を検索する場合
SELECT * FROM 社員
WHERE 社員コード LIKE '%\_%' ESCAPE '\'
実務でよく使用される文字列検索のパターンをご紹介します:
-- メールアドレインのドメイン検索
SELECT * FROM ユーザー
WHERE メールアドレス LIKE '%@gmail.com'
-- 電話番号の市外局番検索
SELECT * FROM 顧客
WHERE 電話番号 LIKE '03-%'
-- 商品コードの特定パターン検索
SELECT * FROM 商品
WHERE 商品コード LIKE 'A___-%%'
これらの検索パターンは、実際のビジネスシーンでよく使用されます。特に注意が必要なのは、パフォーマンスへの影響です。大規模なデータベースでは、インデックスの活用や検索条件の最適化が重要になってきます。
また、最近のデータベース管理システムでは、全文検索インデックスなど、より高度な検索機能も提供されています。これらを適切に使用することで、より効率的な検索が可能になります。