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