表9-1に示す、通常の比較演算子は使用可能です。
注意: !=演算子は構文解析で<>に変換されます。 !=演算子と<>演算子に異なる処理を行わせる実装はできません。
比較演算子はその意味が通るならばすべてのデータ型で使用できます。 すべての比較演算子は二項演算子で、booleanデータ型を返します。 1 < 2 < 3のような式は(ブール値と3を比較する<演算子がないので)無効です。
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
NULLとNULLとは"等しい"関係にはありませんので、expression = NULLと記述してはいけません。 (NULL値は不明の値を表しているため、不明な値同士が同じかどうかは識別できません。)
アプリケーションによっては、(間違っているのですが)expression = NULLが、expressionがNULL値と評価されるのであれば真を返すことを要求することがあります。 このようなアプリケーションをサポートするため、transform_null_equals実行時オプションを有効にできます(例えば、SET transform_null_equals TO ON;と指定します)。 そうするとPostgreSQLはx = NULL句をx IS NULLに変換します。 これはリリース6.5から7.1まではデフォルトでした。
ブール値も次の構文で検証できます。
expression IS TRUE expression IS NOT TRUE expression IS FALSE expression IS NOT FALSE expression IS UNKNOWN expression IS NOT UNKNOWN
これらは、常に真か偽を返し、演算項目がNULLであってもNULL値を返すことはないという点で、IS NULLとよく似ています。 NULL値が入力されると、"不明"という論理値として扱われます。