比較関数と演算子

比較演算は、int、bigint、double、および text などの比較可能な型に使用できる 2 つのパラメーターの値を比較します。

比較演算子

比較演算子を使用して、2 つのパラメーター値を比較します。比較の間、ロジックが真であれば TRUE が返されます。 それ以外の場合は、FALSE が返されます。

演算子 意味
< より小さい
> より大きい
<= 以下
>= 以上
= 等しい
<> 等しくない
!= 等しくない

範囲演算子 BETWEEN

BETWEEN は、パラメーター値が 2 つの他のパラメーターの値の間にあるかどうかを判定するために使用されます。 範囲は閉区間です。

  • ロジックが真の場合、 TRUE が返されます。 それ以外の場合は、FALSE が返されます。

    例:SELECT 3 BETWEEN 2 AND 6; ロジックは真で TRUE が返されます。

    上記の例は、 SELECT 3 >= 2 AND 3 <= 6; と等価です 。

  • BETWEEN は反対のロジックを判定するために NOT に続けることができます。

    例: SELECT 3 NOT BETWEEN 2 AND 6;. ロジックは偽で FALSE が返されます。

    上記の例は、SELECT 3 < 2 OR 3 > 6; と等価です。

  • パラメーターの値が NULL の場合、NULL が返されます。

IS NULL と IS NOT NULL

これらの演算子は、パラメーター値が NULL かどうかを判定するために使用されます。

IS DISTINCT FROM と IS NOT DISTINCT FROM

2 つの値が等しいかどうかを判定するのと同様ですが、これらの演算子は NULL 値が存在するかどうかを判定できます。

例:

SELECT NULL IS DISTINCT FROM NULL; -- false
SELECT NULL IS NOT DISTINCT FROM NULL; -- true

次の表からわかるように、ほとんどの場合、DISTINCT 演算子を使用してパラメーター値を比較できます。

a b a = b a <> b a DISTINCT b NOT DISTINCT b
1 1 TRUE FALSE FALSE TRUE
1 2 FALSE TRUE TRUE FALSE
1 NULL NULL NULL TRUE FALSE
NULL NULL NULL NULL FALSE TRUE

GREATEST と LEAST

これらの演算子は、複数の列間で最大値または最小値を取得するために使用されます。

例:

select greatest(1,2,3) ; -- 3 is returned.

比較条件:ALL、ANY、および SOME

比較条件は、パラメーターが指定された条件を満たすかどうかを判定するために使用されます。

  • ALL は、パラメーターがすべての条件を満たすかどうかを判定するために使用されます。 ロジックが真の場合、TRUE が返されます。 それ以外の場合は、 FALSE が返されます。
  • ANY は、パラメーターがいずれかの条件を満たすかどうかを判定するために使用されます。ロジックが真の場合、TRUE が返されます。 それ以外の場合は、 FALSE が返されます。
  • ANY と同様に、SOME は、パラメーターがいずれかの条件を満たすかどうかを判定するために使用されます。
  • ALL、ANY、および SOME は比較演算子の直後に続けなければなりません。

次の表に示すように、ALL と ANY は多くの場合、比較と判定をサポートします。

表現 意味
A = ALL (…) A がすべての値と等しくない場合、TRUE が返されます。
A <> ALL (…) A がすべての値と等しくない場合、TRUE が返されます。
A < ALL (…) A がすべての値より小さい場合、TRUE が返されます。
A = ANY (…) A が A IN (…) の任意の値と等しい場合、TRUE が返されます。
A <> ANY (…) A が任意の値と等しくない場合、TRUE が返されます。
A < ANY (…) A が最大値よりも小さい場合、TRUE が返されます。
例:
SELECT 'hello' = ANY (VALUES 'hello', 'world'); -- true
SELECT 21 < ALL (VALUES 19, 20, 21); -- false
SELECT 42 >= SOME (SELECT 41 UNION ALL SELECT 42 UNION ALL SELECT 43); -- true