#位运算符

YashanDB提供如下位运算符:

运算符 操作数 含义 NULL参与运算
& 二元 按位与:1 & 1 = 1

其他为0
结果为NULL
| 二元 按位或:0 | 0 = 0

其他为1
结果为NULL
^ 二元 按位异或:0 ^ 0 = 0 或 1 ^ 1 = 0

其他为1
结果为NULL

YashanDB中,可实现位运算的方式有:

其中,&与BITAND同义,|与BITOR同义,^与BITXOR同义。

参与运算的两个数据,按二进制展开后,由低到高每bit进行位运算,并以BIGINT类型输出运算结果。

位运算最多支持到64位。

小数参与运算:FLOOR取整后,参与位运算。

# 运算优先级

从高到低的运算优先级为:^>&>|。

可以使用双括号()来调整想达到的运算优先级。

# 数据类型

如下数据类型可能会参与到位运算中:

  • 数值型(除FLOAT、DOUBLE外)
  • 字符型

在进行二元位运算时,YashanDB将通过隐式数据转换,将参与运算的数据类型全部统一到BIGINT类型,再进行位运算。

下图列示具体统一规则:(行列标题格为参与位运算的数据类型;内容单元格为统一后的数据类型;–表示不支持两种数据类型参与位运算)

数据类型 TINYINT SMALLINT INT BIGINT NUMBER 字符型 BIT
TINYINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
SMALLINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
INT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
NUMBER BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
字符型 BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
BIT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT BIGINT
pdf-btn 下载文档
copy-btn 复制链接