更新时间:2025-10-23 GMT+08:00

位运算操作符

M-Compatibility支持的位运算符,包含按位与(&)、按位或(|)、按位异或(^)、左移(<<)、右移(>>)、按位取反(~)六个位运算运算符,详见表1

优先级:按位取反 > 按位异或 > 左移 = 右移 > 按位与 > 按位或。

&操作符

描述:按位进行与操作。

示例:

m_db=# SELECT 1 & 1;
 ?column? 
----------
 1
(1 row)

|操作符

描述:按位进行或操作。

示例:

m_db=# SELECT 1 | 1;
 ?column? 
----------
 1
(1 row)

^操作符

描述:按位进行异或操作。

示例:

m_db=# SELECT -1 ^ -1;
 ?column? 
----------
 0
(1 row)

<<操作符

描述:左移操作。

示例:

m_db=# SELECT 1 << 1;
 ?column? 
----------
 2
(1 row)

>>操作符

描述:右移操作。

示例:

m_db=# SELECT -1 >> -1;
 ?column? 
----------
 0
(1 row)

~操作符

描述:按位进行非操作。

示例:

m_db=# SELECT ~1;
       ?column?       
----------------------
 18446744073709551614
(1 row) 

位运算操作符规格约束

位运算操作符支持当前M-Compatibility数据库所有已支持的数据类型。如果操作数不为NULL则最终运算结果的类型为BIGINT UNSIGNED;如果其中一个操作数为NULL,则运算结果为NULL。