全部产品
阿里云办公

逻辑运算符

更新时间:2017-06-07 13:26:11

在OceanBase中,逻辑操作符会把左右操作数都转成BOOL类型进行运算。逻辑运算时返回“Error”表示计算错误。

OceanBase各数据类型转换BOOL类型的规则如下:

  • 字符串只有是“True”、“False”、“1”和“0”才能够转换到BOOL类型,其中字符串“True”和“1”为“True”,字符串“False”和“0”为“False”。

  • “INT”、“FLOAT”、“DOUBLE”和“DECIMAL”转换BOOL类型时,数值不为零时为“True”,数值为零时为“False”。

NOT !

逻辑非,操作类型对照表如下。

INT FLOAT DOUBLE TIMESTAMP VARCHAR BOOL NULL
True/False True/False True/False Error True/False/E True/False NULL
Oceanbase>SELECT NOT 0, NOT 1, NOT NULL;
+-------+-------+----------+
| NOT 0 | NOT 1 | NOT NULL |
+-------+-------+----------+
|     1 |     0 |     NULL |
+-------+-------+----------+
1 row in set (0.00 sec)

AND &&

逻辑与,操作类型对照表如下。

INT FLOAT DOUBLE TIMESTAMP VARCHAR BOOL NULL
INT True/False True/False True/False Error True/False/Error True/False False/NULL
FLOAT True/False True/False Error True/False/Error True/False False/NULL
DOUBLE True/False Error True/False/Error True/False False/NULL
TIMESTAMP Error Error True/False Error
VARCHAR True/False/Error True/False/Error False/NULL
BOOL True/False False/NULL
NULL NULL
Oceanbase>SELECT (0 AND 0), (0 AND 1), (1 AND 1), (1 AND NULL);
+-----------+-----------+-----------+--------------+
| (0 AND 0) | (0 AND 1) | (1 AND 1) | (1 AND NULL) |
+-----------+-----------+-----------+--------------+
|         0 |         0 |         1 |         NULL |
+-----------+-----------+-----------+--------------+
1 row in set (0.00 sec)

OR ||

逻辑或,操作类型对照表如下。

INT FLOAT DOUBLE TIMESTAMP VARCHAR BOOL NULL
INT True/False True/False True/False Error True/False/Error True/False True/NULL
FLOAT True/False True/False Error True/False/Error True/False True/NULL
DOUBLE True/False Error True/False/Error True/False True/NULL
TIMESTAMP Error Error Error Error
VARCHAR True/False/Error True/False/Error True/NULL
BOOL True/False True/NULL
NULL NULL
Oceanbase>SELECT (0 OR 0), (0 OR 1), (1 OR 1), (1 AND NULL);
+----------+----------+----------+--------------+
| (0 OR 0) | (0 OR 1) | (1 OR 1) | (1 AND NULL) |
+----------+----------+----------+--------------+
|        0 |        1 |        1 |         NULL |
+----------+----------+----------+--------------+
1 row in set (0.01 sec)

XOR(暂不支持)

逻辑异或。当任意一个操作数为NULL时,返回值为NULL。对于非NULL的操作数,假如有奇数个操作数为非零值,则计算所得结果为1,否则为0。

Mysql>SELECT 1 XOR TRUE, 1 XOR 1, 1 XOR 2, 1 XOR NULL, 1 XOR 1 XOR 1;
+------------+---------+---------+------------+---------------+
| 1 XOR TRUE | 1 XOR 1 | 1 XOR 2 | 1 XOR NULL | 1 XOR 1 XOR 1 |
+------------+---------+---------+------------+---------------+
|          0 |       0 |       0 |       NULL |             1 |
+------------+---------+---------+------------+---------------+
1 row in set (0.01 sec)