逻辑操作符
M-Compatibility模式下支持AND(&&)、OR(||)、NOT(!)、XOR四个逻辑操作符,详见表1。运算结果有三种结果,分别为TRUE、FALSE和空值。
|
运算符 |
操作数 |
含义 |
|---|---|---|
|
NOT/! |
一元 |
逻辑非 |
|
AND/&& |
二元 |
逻辑与 |
|
OR/|| |
二元 |
逻辑或 |
|
XOR |
二元 |
逻辑异或 |
运算规则请参见NOT操作符和AND、OR、XOR操作符,表中的a和b代表逻辑表达式。
NOT操作符
如果操作数为真,则计算结果为假。如果操作数为假,则计算结果为真。
取值范围:布尔类型
运算规则:
|
a |
NOT a |
|---|---|
|
TRUE |
FALSE |
|
FALSE |
TRUE |
|
NULL |
空值 |
“!”和“NOT”功能相同,但是“!”的优先级高于“NOT”。
示例:
m_db=# SELECT NOT TRUE; ?column? ---------- f (1 row) m_db=# SELECT NOT FALSE; ?column? ---------- t (1 row) m_db=# SELECT NOT NULL; ?column? ---------- (1 row)
AND、OR、XOR操作符
AND、OR、XOR的运算逻辑如下:
|
a |
b |
a AND b的结果 |
a OR b的结果 |
a XOR b的结果 |
|---|---|---|---|---|
|
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
|
TRUE |
FALSE |
FALSE |
TRUE |
TRUE |
|
TRUE |
NULL |
空值 |
TRUE |
空值 |
|
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
|
FALSE |
NULL |
FALSE |
空值 |
空值 |
|
NULL |
NULL |
空值 |
空值 |
空值 |
操作符AND、XOR和OR具有交换性,即交换左右两个操作数,不影响其结果。
示例:
m_db=# SELECT TRUE AND TRUE; ?column? ---------- t (1 row) m_db=# SELECT TRUE OR FALSE; ?column? ---------- t (1 row) m_db=# SELECT TRUE XOR NULL; ?column? ---------- (1 row)
逻辑操作符规格约束
逻辑运算支持当前M-Compatibility数据库所有已支持的数据类型。不同大类型之间的数据操作时,先提升到大类型,再根据提升后的大类型的结果是否为0进行计算。提升规则如下表所示。
|
操作符 |
左右入参类型 |
归类类型 |
|---|---|---|
|
XOR |
所有类型 |
BIGINT |
|
AND、OR、NOT |
TINYINT、SMALLINT、MEDIUMINT、INT/INTEGER、BIGINT、TINYINT UNSIGNED、SMALLINT UNSIGNED、MEDIUMINT UNSIGNED、INT/INTEGER UNSIGNED、BIGINT UNSIGNED、BIT、YEAR、BOOL/LBOOLEAN |
BIGINT |
|
其它 |
DOUBLE |