SQLで特定の文字を含むデータの検索方法
この記事のポイント
🔍
LIKE句の基本
文字列検索の基本となるLIKE句の使い方を詳しく解説
🎯
実践的な検索テクニック
ワイルドカードを使った効率的な検索方法
⚡
パフォーマンス最適化
検索速度を向上させるためのテクニック
SQLで文字列を含むデータを検索するための基本構文
データベースから特定の文字列を含むレコードを検索する場合、LIKE句を使用するのが基本的なアプローチです。以下に基本的な構文を示します:
SELECT * FROM テーブル名
WHERE カラム名 LIKE '%検索文字列%'
この構文では、%
記号がワイルドカードとして機能し、任意の文字列を表します。例えば、顧客テーブルから「田中」という文字列を含む顧客を検索する場合:
SELECT * FROM 顧客テーブル
WHERE 氏名 LIKE '%田中%'
SQLの文字列検索におけるワイルドカードの使い方
SQLには主に2種類のワイルドカード文字があります:
%
(パーセント記号):0文字以上の任意の文字列
_
(アンダースコア):任意の1文字
以下に具体的な使用例を示します:
-- 前方一致検索(「SQL」で始まる)
SELECT * FROM 書籍 WHERE タイトル LIKE 'SQL%'
-- 後方一致検索(「入門」で終わる)
SELECT * FROM 書籍 WHERE タイトル LIKE '%入門'
-- 1文字のみのワイルドカード
SELECT * FROM 社員 WHERE 社員番号 LIKE 'A_123'
SQLで特定の文字列を除外した検索方法
NOT LIKE句を使用することで、特定の文字列を含まないレコードを検索できます:
SELECT * FROM テーブル名
WHERE カラム名 NOT LIKE '%除外文字列%'
複数の条件を組み合わせる場合は、AND/OR演算子を使用します:
SELECT * FROM 商品
WHERE 商品名 NOT LIKE '%在庫切れ%'
AND 商品名 NOT LIKE '%終売%'
SQLの文字列検索におけるパフォーマンス最適化のコツ
LIKE検索は便利ですが、大規模なデータベースでは検索速度が低下する可能性があります。以下の最適化テクニックを活用しましょう:
- インデックスの活用
- 前方一致検索(LIKE 'パターン%')の場合、インデックスが使用可能
- 中間一致検索の場合は、全文検索インデックスの使用を検討
- パターンマッチングの最適化
-- 非効率な検索
WHERE カラム LIKE '%文字列%'
-- より効率的な検索
WHERE SUBSTRING(カラム, 1, 10) = '文字列'
SQLの高度な文字列操作関数を使用した検索テクニック
LIKE句だけでなく、SQLの文字列操作関数を組み合わせることで、より柔軟な検索が可能になります:
-- SUBSTRING関数を使用した部分文字列の抽出
SELECT SUBSTRING(カラム名, 開始位置, 長さ) FROM テーブル名
-- CHARINDEX関数を使用した文字列位置の検索
SELECT * FROM テーブル名
WHERE CHARINDEX('検索文字列', カラム名) > 0
文字列の結合や変換も活用できます:
-- 文字列の結合
SELECT CONCAT(姓, ' ', 名) AS フルネーム
FROM 社員テーブル
-- 大文字・小文字の変換
SELECT * FROM テーブル名
WHERE UPPER(カラム名) LIKE UPPER('%検索文字列%')