Skip to main content

Logical operators

seekdb supports common logical operators.

Overview of logical operators

The following table describes the logical operators supported in the current version of seekdb.

OperatorOperandsDescription
NOT/!UnaryLogical NOT
AND/&&BinaryLogical AND
OR/``
XORMultipleLogical XOR

Description

In SQL, the result of any logical operator is TRUE, FALSE, or NULL (UNKNOWN). In seekdb, they are implemented as 1 (TRUE), 0 (FALSE), and NULL, and any non-zero, non-NULL value is evaluated as TRUE.

Limitations

The ANY operator is supported only for array data types. For more information about the usage and examples, see Array decision functions.

NOT/!

If the operand is 0, the result is 1. If the operand is non-zero, the result is 0, and NOT NULL returns NULL.

Here is an example:

SELECT NOT NULL;
+----------+
| NOT NULL |
+----------+
| NULL |
+----------+
1 row in set (0.001 sec)

SELECT ! (1+1);
+---------+
| ! (1+1) |
+---------+
| 0 |
+---------+
1 row in set (0.001 sec)

AND/&&

If all operands are non-zero and not NULL, the result is 1. If one or more operands are 0, the result is 0. Otherwise, NULL is returned.

Here is an example:

SELECT 1 AND NULL;
+------------+
| 1 AND NULL |
+------------+
| NULL |
+------------+
1 row in set (0.001 sec)

SELECT 0 AND NULL;
+------------+
| 0 AND NULL |
+------------+
| 0 |
+------------+
1 row in set (0.000 sec)

OR/||

If both operands are not NULL, the result is 1 if any operand is non-zero, otherwise 0. For NULL operands, if the other operand is non-zero, the result is 1; otherwise, NULL is returned. If both operands are NULL, the result is NULL.

Here is an example:

SELECT 0 OR NULL;
+-----------+
| 0 OR NULL |
+-----------+
| NULL |
+-----------+
1 row in set (0.001 sec)

SELECT 1 OR NULL;
+-----------+
| 1 OR NULL |
+-----------+
| 1 |
+-----------+
1 row in set (0.000 sec)

XOR

If any operand is NULL, NULL is returned. For non-NULL operands, if an odd number of operands are non-zero, the result is 1; otherwise, 0 is returned.

Here is an example:

SELECT 1 XOR NULL;
+------------+
| 1 XOR NULL |
+------------+
| NULL |
+------------+
1 row in set (0.001 sec)

SELECT 1 XOR 1 XOR 1;
+---------------+
| 1 XOR 1 XOR 1 |
+---------------+
| 1 |
+---------------+
1 row in set (0.001 sec)
info

a XOR b is mathematically equivalent to (a AND (NOT b)) OR ((NOT a) and b).