無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

9.2. 比較演算子

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

表 9-1. 比較演算子

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

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

比較演算子は関連性のある全てのデータ型で使用できます。全ての比較演算子は二項演算子で、 boolean データ型を返します。 1 < 2 < 3 のような式は(ブール値と 3 を比較する < 演算子がないので)無効です。

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



a

 BETWEEN 

x

 AND 

y



a

 >= 

x

 AND 

a

 <= 

y

BETWEEN は範囲内に含まれるとして終点値を扱うことに注意してください。 NOT BETWEEN はその反対の比較をします(指定した値は包括しません)。



a

 NOT BETWEEN 

x

 AND 

y



a

 < 

x

 OR 

a

 > 

y

と同一です。 BETWEEN SYMMETRIC は、 AND の左側の引数が右側の引数より小さいか、もしくは等しいという必要性が無い点を除き BETWEEN と同じです。 この条件を満たしていない場合、2つの引数は自動的に置き換えられますので、常に空ではない範囲となります。

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



expression

 IS NULL


expression

 IS NOT NULL

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



expression

 ISNULL


expression

 NOTNULL

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

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

注意: expression が行値の場合、行式自体がNULLまたは、行のフィールドすべてがNULLの場合に IS NULL は真となります。一方 IS NOT NULL は、行式自体が非NULLまたは、行のフィールドすべてが非NULLの場合に真となります。 この動作により、 IS NULL および IS NOT NULL は行値評価式に対し常に反対の結果を返しません。つまりNULLと非NULLの値の両方を含む行値式はどちらの試験でも偽を返します。 この定義は標準SQLに従ったもので、8.2より前のバージョンの PostgreSQL における一貫性のない動作から変更されました。

入力のどちらかが真または偽ではなくNULLの場合、通常の比較演算子は( "不明" を意味する)nullを生成します。例えば 7 = NULL はnullになります。 7 <> NULL も同様です。この動作が適切でない場合は、 IS [ NOT ] DISTINCT FROM 構文を使用してください。



expression

 IS DISTINCT FROM 

expression




expression

 IS NOT DISTINCT FROM 

expression

非NULLの入力では、 IS DISTINCT FROM <> 演算子と同じです。 しかし、入力がどちらもNULLの場合、これは偽を返し、片方の入力のみがNULLの場合は真を返します。 同様に、 IS NOT DISTINCT FROM は非NULL入力では = と同じですが、両方の入力がNULLであれば真を、片方のみがNULLの場合は偽を返します。このように、これらの構文はNULLを "不明な値" ではなく、通常の値かのように動作します。

論理値も次の構文で検証できます。



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 UNKNOWN IS NOT UNKNOWN が、入力式が論理値型でなければならないという点を除き、それぞれ実質的に IS NULL IS NOT NULL と同じであることに注意してください。


powered by SEO.CUG.NET