他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.2. 比較演算子

表9-1に示す、通常の比較演算子は使用可能です。

表 9-1. 比較演算子

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

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

比較演算子はその意味が通るならば全てのデータ型で使用できます。 全ての比較演算子は二項演算子で、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でないかを検証するには次の構文を使います。

expression IS NULL
expression IS NOT NULL

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

expression ISNULL
expression NOTNULL

NULLNULLとは"等しい"関係にはありませんので、expression = NULLと記述してはいけません。 (NULL値は不明の値を表しているため、不明な値同士が同じかどうかは識別できません。) このは標準SQLに従った動作です。

ティップ: アプリケーションによっては、expression = NULLが、expressionがNULL値と評価されるのであれば真を返すことを期待することがあります。 こうしたアプリケーションを標準SQLに従うように改修することを強く推奨します。 しかし、できなければtransform_null_equalsを使用することで対応することができます。 これを有効にした場合、PostgreSQLx = NULL句をx IS NULLに変換します。 これはPostgreSQLのリリース6.5から7.1まではデフォルトでした。

入力のどちらかがNULLの場合、通常の比較演算子は("不明"を意味する)NULLを生成します。 比較を行う他の方法に、以下のようにIS DISTINCT FROM式があります。

expression IS DISTINCT FROM expression

非NULLの入力の場合、これは<>演算子と同じです。 しかし、入力のどちらもNULLの場合、これは偽を返し、片方の入力がNULLの場合は真を返します。 このように、NULL値が"unknown"ではなく、実質的に普通のデータ値のように動作します。

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

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

これらは、常に真か偽を返し、演算項目がNULLであってもNULL値を返すことはありません。 NULL値が入力されると、"不明"という論理値として扱われます。 IS UNKNOWNIS NOT UNKNOWNが、入力式がBoolean型でなければならないという点を除き、それぞれ実質的にIS NULLIS NOT NULLと同じであることに注意してください。