Array comparisons¶
An array comparison operator test the relationship
between a value and an array and return true, false, or NULL.
See also
Table of contents
IN (value [, ...])¶
Syntax:
expression IN (value [, ...])
The IN operator returns true if the left-hand
matches at least one value contained within the right-hand side.
The operator returns NULL if:
The left-hand expression evaluates to
NULLThere are no matching right-hand values and at least one right-hand value is
NULL
Here’s an example:
cr> SELECT
...   1 in (1, 2, 3) AS a,
...   4 in (1, 2, 3) AS b,
...   5 in (1, 2, null) as c;
+------+-------+------+
| a    | b     | c    |
+------+-------+------+
| TRUE | FALSE | NULL |
+------+-------+------+
SELECT 1 row in set (... sec)
ANY/SOME (array expression)¶
Syntax:
expression <comparison> ANY | SOME (array_expression)
Here, <comparison> can be any basic comparison operator.
An example:
cr> SELECT
...   1 = ANY ([1,2,3]) AS a,
...   4 = ANY ([1,2,3]) AS b;
+------+-------+
| a    | b     |
+------+-------+
| TRUE | FALSE |
+------+-------+
SELECT 1 row in set (... sec)
The ANY operator returns true if the defined
comparison is true for any of the values in the right-hand array
expression.
If the right side is a multi-dimension array it is automatically unnested to the required dimension.
An example:
cr> SELECT
...   4 = ANY ([[1, 2], [3, 4]]) as a,
...   5 = ANY ([[1, 2], [3, 4]]) as b,
...   [1, 2] = ANY ([[1,2], [3, 4]]) as c,
...   [1, 3] = ANY ([[1,2], [3, 4]]) as d;
+------+-------+------+-------+
| a    | b     | c    | d     |
+------+-------+------+-------+
| TRUE | FALSE | TRUE | FALSE |
+------+-------+------+-------+
SELECT 1 row in set (... sec)
The operator returns false if the comparison returns false for all
right-hand values or if there are no right-hand values.
The operator returns NULL if:
The left-hand expression evaluates to
NULLThere are no matching right-hand values and at least one right-hand value is
NULL
Tip
When doing NOT <value> = ANY(<array_col>), query performance may be
degraded because special handling is required to implement the 3-valued
logic. To achieve better performance, consider using the ignore3vl
function.
ALL (array_expression)¶
Syntax:
value comparison ALL (array_expression)
Here, comparison can be any basic comparison operator. Objects and arrays of objects are not supported
for either operand.
Here’s an example:
cr> SELECT 1 <> ALL(ARRAY[2, 3, 4]) AS x;
+------+
| x    |
+------+
| TRUE |
+------+
SELECT 1 row in set (... sec)
The ALL operator returns true if the defined
comparison is true for all values in the right-hand array expression.
The operator returns false if the comparison returns false for all
right-hand values.
The operator returns NULL if:
The left-hand expression evaluates to
NULLNo comparison returns
falseand at least one right-hand value isNULL