原文链接:https://www.gbase.cn/community/post/4371
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
位函数使用说明
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”。
以上就是位函数的使用介绍,感谢大家阅读!
原文链接:https://www.gbase.cn/community/post/4371
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。