SQLで含むを使った検索条件とLIKE句の基本と応用

SQLのLIKE句を使った文字列検索の基本から応用まで、実践的なコード例を交えて解説します。初心者でも使いこなせるテクニックとは?

SQLで含むを使った検索条件の実践テクニック

SQLの文字列検索の基礎知識
🔍
LIKE句の基本

文字列の部分一致検索に使用する基本的な演算子

📝
ワイルドカード

%と_を使った柔軟な検索パターン

パフォーマンス

インデックスを活用した効率的な検索方法

SQLのLIKE句による文字列検索の基本

データベースで文字列を含む検索を行う場合、LIKE句が基本となります。以下のような基本構文で使用します:


SELECT * FROM テーブル名 WHERE カラム名 LIKE '%検索文字列%'

 

具体例として、部署名に「営業」という文字列を含むレコードを検索する場合:


SELECT departmentId, departmentName 
FROM department 
WHERE departmentName LIKE '%営業%'

 

この検索では、「営業部」や「営業支援部」などが結果として得られます。

SQLの検索パターンとワイルドカードの活用法

LIKE句では、以下の3つの主要な検索パターンが利用できます:

  1. 前方一致検索:LIKE '文字列%'
  2. 後方一致検索:LIKE '%文字列'
  3. 部分一致検索:LIKE '%文字列%'

 

実践的な例として、顧客データベースでの検索を見てみましょう:


-- 「山田」で始まる名前を検索
SELECT * FROM customer WHERE name LIKE '山田%'
-- 「子」で終わる名前を検索
SELECT * FROM customer WHERE name LIKE '%子'
-- 「田」を含む名前を検索
SELECT * FROM customer WHERE name LIKE '%田%'

SQLの複合条件を使った高度な検索テクニック

複数の条件を組み合わせることで、より精密な検索が可能になります。AND演算子とOR演算子を使用した例を見てみましょう:


-- 年齢が25歳以上で、名前に「山田」を含む顧客を検索
SELECT * FROM customer 
WHERE age >= 25 
AND name LIKE '%山田%'
-- 「田中」または「山田」を含む名前を検索
SELECT * FROM customer 
WHERE name LIKE '%田中%' 
OR name LIKE '%山田%'

SQLのパフォーマンスを考慮した検索設計

LIKE句を使用する際は、以下のパフォーマンス最適化ポイントを考慮することが重要です:

  1. インデックスの活用

    • 前方一致検索ではインデックスが使用可能
    • 中間一致・後方一致ではインデックスが使用されにくい

  2. 検索対象の絞り込み

    • WHERE句で他の条件と組み合わせて検索範囲を限定
    • 必要なカラムのみを選択


-- パフォーマンスを考慮した検索例
SELECT id, name 
FROM customer 
WHERE status = 'active' 
AND created_date >= '2024-01-01'
AND name LIKE '山田%'

SQLの正規表現を活用した高度な文字列検索

データベース管理システムによっては、より柔軟な検索が可能な正規表現機能が利用できます。MySQLの場合、REGEXP演算子を使用できます:


-- 「田」または「山」で始まる名前を検索
SELECT * FROM customer 
WHERE name REGEXP '^(田|山)'
-- カタカナのみの名前を検索
SELECT * FROM customer 
WHERE name REGEXP '^[ァ-ヶー]+$'

 

これらの検索テクニックを組み合わせることで、より効率的なデータ抽出が可能になります。ただし、正規表現の使用はパフォーマンスに影響を与える可能性があるため、使用する際は注意が必要です。