PostgreSQLのBETWEENの使い方完全ガイド|日付・数値・文字列の範囲指定をマスター

目次

PostgreSQLのBETWEENとは

BETWEENは「指定した範囲内の値を抽出する」ための条件式です。
PostgreSQLでは、BETWEENを使うことで数値・日付・文字列などの「範囲検索」が簡単にできます。
例えば、売上金額が1000〜5000のデータだけを抽出したいとき、BETWEENを使うと直感的でわかりやすいSQLが書けます。

基本構文と数値の範囲検索

構文

SELECT 列名
FROM テーブル名
WHERE 列名 BETWEEN 下限値 AND 上限値;

BETWEENは「下限値以上かつ上限値以下」を含みます(両端を含む)。
例えば、商品の価格が1000円〜5000円(1000円以上かつ5000円以下)の範囲を抽出するSQLは以下の通りです。

例:数値の範囲検索

SELECT product_name, price
FROM products
WHERE price BETWEEN 1000 AND 5000;

このSQLは price >= 1000 AND price <= 5000 と同じ意味になります。

日付型でのBETWEENの使い方

PostgreSQLでは、BETWEENを日付型にも使えます。
売上日が「2024年1月1日〜2024年1月31日」のデータを抽出する場合、以下のように書けます。

SELECT order_id, order_date, total_amount
FROM orders
WHERE order_date BETWEEN '2024-01-01' AND '2024-01-31';
  • PostgreSQLのdate型やtimestamp型に対応。
  • 日付の範囲は「指定日を含む(inclusive)」ため、1月31日も含まれます。

文字列の範囲指定でのBETWEEN

文字列型でもBETWEENは使えます。
PostgreSQLでは、文字列を辞書順(アルファベット順)で比較します。

SELECT name
FROM customers
WHERE name BETWEEN 'A' AND 'C';

この場合、「A」から始まり「C」までの文字列が対象になります。
ただし、CそのものやCa...なども含まれるため、あいまいな結果になりやすい点には注意が必要です。
文字列の部分一致検索をしたい場合は、LIKEILIKEのほうが適しています。

NOT BETWEENの使い方と違い

範囲外のデータを取得したい場合は、NOT BETWEENを使います。

SELECT product_name, price
FROM products
WHERE price NOT BETWEEN 1000 AND 5000;

これは price < 1000 OR price > 5000 (1000円未満または5000円より高い)と同じ意味になります。
範囲外データを簡潔に取得できるため、異常値チェックやレポート作成時に便利です。

BETWEENを使う際の注意点

注意1:両端を含む

BETWEEN下限値と上限値の両方を含む 仕様です。
これを誤解して「上限値を含まない」と思い込むと、意図しない結果を返すことがあります。

注意2:NULL値にはマッチしない

BETWEENNULL を含みません。
範囲内・範囲外どちらの条件でも、NULLは除外されます。
必要に応じて COALESCE() 関数でNULLを扱うと良いでしょう。

注意3:文字列比較は辞書順

「文字列順序」はロケール設定(照合順序)に依存する場合があります。
特に日本語を含むデータでは、意図した順序で比較されないことがあるため注意が必要です。

まとめ:BETWEENを正しく使って効率的なクエリを

BETWEENは、PostgreSQLで最も基本的かつ強力な条件指定の1つです。

  • 数値・日付・文字列に対応
  • 両端を含む
  • NOT BETWEENで範囲外も簡単に抽出

SQLをシンプルにし、可読性を高めるために積極的に活用しましょう。
ただし、NULL値や文字列比較の挙動には注意が必要です。
BETWEENを正しく使いこなすことで、PostgreSQLのクエリ作成効率が大きく向上します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

・20代
・IT未経験からSIerに就職、開発とプロジェクト管理を経験
・働いている中で会計に興味を持ち、ERPの会計領域を挑戦中
・筋トレ最高!
保有資格:日商簿記1級/応用情報/ITストラテジスト

コメント

コメントする

目次