6.2. 比較演算子

通常の比較演算子は使用可能です (Table 6-1 参照)。

Table 6-1. 比較演算子

演算子説明
< 小なり
> 大なり
<= 以下
>= 以上
= 等しい
<> または != 等しくない

Note: != 演算子は構文解析で <> に変換されます。 演算子と <> 演算子に異なる処理を行わせる実装はできません。

比較演算子はその意味が通るならばすべてのデータ型で使用できます。すべての比較演算子は二項演算子で、boolean データ型を返します。 1 < 2 < 3 は(ブール値と 3 を比較する < 演算子がないので)無効です。

比較演算子に加えて特殊な BETWEEN 構文が使えます。

a BETWEEN x AND y

は次と同等です。

a >= x AND a <= y

同様にして、

a NOT BETWEEN x AND y

は次と同等です。

a < x OR a > y

内部的に最初のの形式を 2 番目の形式に書き換えるのに必要となる CPU サイクル以外それぞれの形式には違いはありません。

値が NULL か NULL でないかを検証するには次の構文を使います。

 IS NULL
 IS NOT NULL

あるいは、これと同等の、標準的ではない構文も使えます。

 ISNULL
 NOTNULL

NULL は 「等しい」 NULL とは異なるため、 = NULL と記述してはいけません。 (NULL 値は不明の値を表しているため、不明な値同士が同じかどうかは識別できません。)

アプリケーションによっては、(間違っているのですが) = NULL が、 が NULL 値を評価するのであれば真 (true) を返すことを要求することがあります。このようなアプリケーションをサポートするため、実行時オプション transform_null_equals を有効にできます(例えば、SET transform_null_equals TO ON; と指定します)。そうすると PostgreSQLx = NULL 句を x IS NULL に変換します。これはリリース 6.5 から 7.1 まではデフォルトでした。

ブール値も次の構文で検証できます。

 IS TRUE
 IS NOT TRUE
 IS FALSE
 IS NOT FALSE
 IS UNKNOWN
 IS NOT UNKNOWN

これらは、常に真 (true) か 偽 (false) を返し、演算項目が NULL であっても NULL 値を返すことはないという点で、IS NULL とよく似ています。 NULL 値が入力されると、論理値の「不明」と扱われます。