SQLiteのLIKEとBETWEENをマスターしよう!検索に便利な演算子の使い方を解説

SQLiteは軽量で扱いやすいデータベースとして、多くの開発現場や個人プロジェクトで活用されています。特にテキスト検索や範囲指定で便利な「LIKE」や「BETWEEN」といった演算子は、データ抽出の効率を大きく向上させる力を持っています。本記事では、SQLiteにおける「LIKE」と「BETWEEN」演算子の基本的な使い方から、知っておくと役立つ応用テクニックまでを、わかりやすく丁寧に解説します。これからSQLiteを学び始める方はもちろん、日常的に使っているけれど詳しくは知らないという方にもおすすめです。


SQLiteのLIKE演算子とは?

「LIKE」演算子は、文字列パターンの一致を調べるための比較演算子です。SQLでは、完全一致(=)だけでなく、「あるパターンにマッチする文字列を取得したい」といった場合に重宝します。

基本構文

SELECT * FROM テーブル名 WHERE カラム名 LIKE 'パターン';

ワイルドカードの使い方

SQLiteのLIKEでは、次の2種類のワイルドカードが使えます。

  • %(パーセント):任意の文字列(0文字以上)を表す
  • _(アンダースコア):任意の1文字を表す

例1:名前が「田中」で始まるデータを取得

SELECT * FROM users WHERE name LIKE '田中%';

→「田中一郎」「田中花子」などがヒットします。

例2:3文字目が「山」の名前を探す

SELECT * FROM users WHERE name LIKE '__山%';

→「佐々山」「伊東山田」などが該当します。


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では、%ではなく*_ではなく?が使われます。


SQLiteのBETWEEN演算子とは?

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:範囲外を抽出

範囲に含まれないデータを抽出したい場合はNOT BETWEENを使います。

SELECT * FROM users WHERE age NOT BETWEEN 20 AND 30;

→年齢が20歳未満または31歳以上のユーザーが取得されます。


LIKEとBETWEENを組み合わせる

これらの演算子は、もちろん単独でも強力ですが、WHERE句でANDやORと組み合わせて使うことで、さらに強力な検索が可能になります。

例:20代で、名前が「佐藤」で始まる人

SELECT * FROM users
WHERE age BETWEEN 20 AND 29
AND name LIKE '佐藤%';

このように組み合わせれば、「20代の佐藤さん」だけを抽出できます。


LIKEとBETWEENの応用:INSTR関数や正規表現との比較

SQLiteでは、LIKE以外にも文字列検索に役立つ機能があります。

INSTR:文字の位置を調べる

SELECT * FROM products WHERE INSTR(name, 'カレー') > 0;

→商品名に「カレー」が含まれているデータを取得。

LIKEよりも厳密な一致を狙いたいときに便利です。

REGEXP(正規表現)は使える?

SQLiteは標準ではREGEXPをサポートしていませんが、拡張すれば正規表現での検索も可能になります。ただし、LIKEやINSTRのほうが導入が簡単です。


実践での使い方:アプリやツールでのLIKE活用例

SQLiteは、モバイルアプリやElectronアプリなどで使われることも多く、検索画面での「あいまい検索」や、「価格帯指定」のフィルターなどで頻繁にLIKEやBETWEENが使われます。

  • ユーザー検索(名前に一部一致する候補を出す)→LIKE
  • 商品一覧のフィルター(価格帯で絞る)→BETWEEN
  • 日付フィルター(特定の期間だけ表示)→BETWEEN

こうした使い方を意識することで、SQLiteの利便性は飛躍的に高まります。


まとめ

SQLiteの「LIKE」と「BETWEEN」演算子は、柔軟で強力な検索を可能にする重要なツールです。

  • LIKEは文字列のパターンマッチに最適
  • BETWEENは範囲指定に便利
  • 両者を組み合わせれば、複雑な条件検索もシンプルに書ける
  • 大文字小文字の扱いや、正規表現との違いも理解しておくとより効果的

これらをマスターすることで、SQLiteのクエリ力がグンと上がります。ぜひ実際のプロジェクトで試してみてください!

タイトルとURLをコピーしました