位函数使用说明

GBase 8a MPP Cluster使用BIGINT(64位)算法进行位运算,所以这些操作符最大有效范围是64位。

注意:位函数运算只支持数值类型。

1 |按位或

示例

返回“29 | 15”的计算结果。

gbase> SELECT 29 | 15 FROM dual;
+---------+
| 29 | 15 |
+---------+
|      31 |
+---------+
1 row in set

说明:29对应的比特值为“11101”,15对应的比特值为“1111”,逐位进行或操作,结果为“11111”,对应的十进制值为“31”。

2 &按位与

示例

返回“29 & 15”的计算结果。

gbase> SELECT 29 & 15 FROM dual;
+---------+
| 29 & 15 |
+---------+
|      13 |
+---------+
1 row in set

说明:示例说明:“29”对应的比特值为“11101”,15对应的比特值为“1111”,逐位进行与操作,结果为“1101”,对应的十进制值为“13”。

3 ^按位异或

示例

示例1:返回“1 ^ 1”的计算结果。

gbase> SELECT 1 ^ 1 FROM dual;
+-------+
| 1 ^ 1 |
+-------+
|     0 |
+-------+
1 row in set

示例2:返回“1 ^ 0”的计算结果。

gbase> SELECT 1 ^ 0 FROM dual;
+-------+
| 1 ^ 0 |
+-------+
|     1 |
+-------+
1 row in set

示例3:返回“11 ^ 3”的计算结果。

gbase> SELECT 11 ^ 3 FROM dual;
+--------+
| 11 ^ 3 |
+--------+
|      8 |
+--------+
1 row in set

说明:“11”对应的比特值为“1011”,“3”对应的比特值为“0011”,逐位进行异或,结果为“1000”,对应的十进制值为“8”。

4 <<左移操作(BIGINT)

示例

示例1:返回“1 << 2”的计算结果。
gbase> SELECT 1 << 2 FROM dual;
+--------+
| 1 << 2 |
+--------+
|      4 |
+--------+
1 row in set

说明:“1”对应的比特值为“0001”,左移两位为“0100”,对应的十进制为“1”。

5 >>右移操作(BIGINT) 

示例

返回“4 >> 2”的计算结果。

gbase> SELECT 4 >> 2 FROM dual;
+--------+
| 4 >> 2 |
+--------+
|      1 |
+--------+
1 row in set

说明:示例说明:“4”对应的比特值为“0100”,右移两位为“0001”,对应的十进制值为“1”。

6 BIT_COUNT(N)

函数说明:返回在参数N中设置的比特位是1的总数量。

示例

返回“29”设置的比特位中1的个数。

gbase> SELECT BIT_COUNT(29) FROM dual;
+---------------+
| BIT_COUNT(29) |
+---------------+
|             4 |
+---------------+
1 row in set

说明:“29”对应的比特值为“11101”,对应的比特位中1的个数是“4”。

以上就是位函数的使用介绍,感谢大家阅读!