位操作函数

最近更新时间:2026-05-06 16:28:13

我的收藏
说明:
适用版本:TCHouse-X 内核版本 2.0.0及以上版本。

逻辑位运算符

此类函数通过比较两个整数对应的二进制位来计算结果。
函数
说明
SQL 样例
结果 (二进制)
bitwise_and(x, y)
返回 xy 的按位与结果
SELECT bitwise_and(3, 5);
1 (0011 & 0101 = 0001)
bitwise_or(x, y)
返回 xy 的按位或结果
SELECT bitwise_or(3, 5);
7 (0011 | 0101 = 0111)
bitwise_xor(x, y)
返回 xy 的按位异或结果
SELECT bitwise_xor(3, 5);
6 (0011 ^ 0101 = 0110)
bitwise_not(x)
返回 x 的按位非值 (NOT)
SELECT bitwise_not(0);
-1

位统计与提取

用于分析数值内部的 1 分布情况。
函数
说明
SQL 样例
结果
bit_count(x)
统计参数 x 中被设置为 1 的位数。
SELECT bit_count(7);
37 的二进制是 111,共有 3 个 "1"。)
bit_get(x, pos)
返回指定位置 pos 的位值(01)。
SELECT bit_get(11, 3);
1(11 二进制为 1011。第 3 位(从右往左,0 开始)是 1。)
getbit(x, pos)
同上
SELECT getbit(11, 2);
0(功能同上。第 2 位是 0。)
注意:
bit_getpos 不能超过类型的最大位数(如 INTEGER 是 31,BIGINT 是 63),否则会报错。

位移操作

在底层算法中常用于快速乘、除以 2^n。
函数
SQL 样例
结果
计算过程
shiftleft(x, n)
SELECT shiftleft(2, 2);
8
2 (0010) 左移 2 位变为 8 (1000)。相当于 2 * (2^2)。
shiftright(x, n)
SELECT shiftright(8, 1);
4
8 (1000) 右移 1 位变为 4 (0100)。相当于 8 / (2^1)。