逻辑操作符
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的结果 | 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进行计算。提升规则如表4所示。