SQLiteは軽量で扱いやすいデータベースとして、多くの開発現場や個人プロジェクトで活用されています。特にテキスト検索や範囲指定で便利な「LIKE」や「BETWEEN」といった演算子は、データ抽出の効率を大きく向上させる力を持っています。本記事では、SQLiteにおける「LIKE」と「BETWEEN」演算子の基本的な使い方から、知っておくと役立つ応用テクニックまでを、わかりやすく丁寧に解説します。これからSQLiteを学び始める方はもちろん、日常的に使っているけれど詳しくは知らないという方にもおすすめです。
「LIKE」演算子は、文字列パターンの一致を調べるための比較演算子です。SQLでは、完全一致(=)だけでなく、「あるパターンにマッチする文字列を取得したい」といった場合に重宝します。
SELECT * FROM テーブル名 WHERE カラム名 LIKE 'パターン';
SQLiteのLIKEでは、次の2種類のワイルドカードが使えます。
SELECT * FROM users WHERE name LIKE '田中%';
→「田中一郎」「田中花子」などがヒットします。
SELECT * FROM users WHERE name LIKE '__山%';
→「佐々山」「伊東山田」などが該当します。
SQLiteでは、**LIKEはデフォルトで大文字小文字を区別しない(case-insensitive)**という特徴があります。
SELECT * FROM products WHERE name LIKE 'apple';
このクエリは「Apple」「APPLE」「apple」など、どれにもマッチします。
LIKE
の代わりにGLOB
を使うことで、大文字小文字を区別した検索が可能です。
SELECT * FROM products WHERE name GLOB 'Apple';
GLOBでは、%
ではなく*
、_
ではなく?
が使われます。
BETWEEN
は、指定した範囲内に値が含まれるかどうかを調べるのに使います。日付や数値の範囲を指定して絞り込みたい場合にとても便利です。
SELECT * FROM テーブル名 WHERE カラム名 BETWEEN 最小値 AND 最大値;
BETWEENを使うと、読みやすく、可読性の高いSQLを書くことができます。
SELECT * FROM products WHERE price BETWEEN 100 AND 500;
→価格が100円以上500円以下の商品が対象になります。
※BETWEEN
は両端の値を含みます(inclusive)。
SELECT * FROM orders WHERE order_date BETWEEN '2023-01-01' AND '2023-12-31';
→2023年中の注文を抽出するクエリです。SQLiteでは日付も文字列として扱われるため、日付のフォーマットを正確にする必要があります。
範囲に含まれないデータを抽出したい場合はNOT BETWEEN
を使います。
SELECT * FROM users WHERE age NOT BETWEEN 20 AND 30;
→年齢が20歳未満または31歳以上のユーザーが取得されます。
これらの演算子は、もちろん単独でも強力ですが、WHERE句でANDやORと組み合わせて使うことで、さらに強力な検索が可能になります。
SELECT * FROM users
WHERE age BETWEEN 20 AND 29
AND name LIKE '佐藤%';
このように組み合わせれば、「20代の佐藤さん」だけを抽出できます。
SQLiteでは、LIKE以外にも文字列検索に役立つ機能があります。
SELECT * FROM products WHERE INSTR(name, 'カレー') > 0;
→商品名に「カレー」が含まれているデータを取得。
LIKEよりも厳密な一致を狙いたいときに便利です。
SQLiteは標準ではREGEXP
をサポートしていませんが、拡張すれば正規表現での検索も可能になります。ただし、LIKEやINSTRのほうが導入が簡単です。
SQLiteは、モバイルアプリやElectronアプリなどで使われることも多く、検索画面での「あいまい検索」や、「価格帯指定」のフィルターなどで頻繁にLIKEやBETWEENが使われます。
こうした使い方を意識することで、SQLiteの利便性は飛躍的に高まります。
SQLiteの「LIKE」と「BETWEEN」演算子は、柔軟で強力な検索を可能にする重要なツールです。
これらをマスターすることで、SQLiteのクエリ力がグンと上がります。ぜひ実際のプロジェクトで試してみてください!