逻辑运算符
seekdb 支持常用的逻辑运算符。
逻辑运算符概览
seekdb 当前版本所支持的逻辑运算符的详细信息如下表所示。
| 运算符 | 操作数 | 含义 |
|---|---|---|
NOT/! | 一元 | 逻辑非 |
AND/&& | 二元 | 逻辑与 |
OR/` | ` | |
XOR | 多元 | 逻辑异或 |
说明
在 SQL 中,所有逻辑运算符的计算结果为 TRUE、FALSE 或 NULL (UNKNOWN)。seekdb 将他们实现为 1 (TRUE)、0 (FALSE) 和 NULL,并将任何非零、非 NULL 值评估为 TRUE。
限制
只有数组数据类型支持 ANY 运算符。用法和示例请参见数组判断函数。
NOT/!
如果操作数为 0,则计算结果为 1。如果操作数为非零,则计算结果为 0,并且 NOT NULL 返回 NULL。
示例如下:
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/&&
如果所有操作数都非零且不为 NULL,则计算结果为 1。如果一个或多个操作数为 0,则计算结果为 0,否则返回 NULL。
示例如下:
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/||
当两个操作数都不为 NULL 时,如果任何操作数为非零,则结果为 1,否则为 0。 对于 NULL 操作数,如果另一个操作数非零,则结果为 1,否则为 NULL。 如果两个操作数都为 NULL,则结果为 NULL。
示例如下:
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
如果任一操作数为 NULL,则返回 NULL。对于非 NULL 操作数,如果奇数个操作数不为零,则计算结果为 1,否则返回 0。
示例如下:
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)
信息
a XOR b 在数学上等于 (a AND (NOT b)) OR ((NOT a) and b)。