更新时间:2025-09-11 GMT+08:00
分享

逻辑操作符

M-Compatibility模式下支持AND(&&)、OR(||)、NOT(!)和XOR四个逻辑操作符,如表1所示。运算结果有三种结果,分别为TRUE、FALSE和空值。

表1 逻辑操作符详情

运算符

操作数

含义

NOT/!

一元

逻辑非

AND/&&

二元

逻辑与

OR/||

二元

逻辑或

XOR

二元

逻辑异或

运算规则请参见NOT操作符AND、OR、XOR操作符,表中的a和b代表逻辑表达式。

NOT操作符

如果操作数为真,则计算结果为假。如果操作数为假,则计算结果为真。

取值范围:布尔类型

运算规则:

表2 NOT运算规则表(以TRUE、FALSE、NULL进行运算)

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所示。

表3 AND、OR、XOR运算规则表(以TRUE、FALSE、NULL进行运算)

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所示。

表4 逻辑运算类型归类

操作符

左右入参类型

归类类型

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

相关文档