逻辑操作符
M-Compatibility模式下支持AND(&&)、OR(||)、NOT(!)和XOR四个逻辑操作符,如表1所示。运算结果有三种结果,分别为TRUE、FALSE和空值。
运算规则请参见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的运算逻辑如表3所示。
a | b | a AND b的结果 | aOR 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进行计算。提升规则如表4所示。

