逻辑操作符
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所示。