位运算函数¶
- bit_count(x, bits) -> bigint()¶
计算
x
中设置的位数(视为bits
位有符号整数)在二进制补码表示中的数量。SELECT bit_count(9, 64); -- 2 SELECT bit_count(9, 8); -- 2 SELECT bit_count(-7, 64); -- 62 SELECT bit_count(-7, 8); -- 6
- bitwise_and(x, y) -> bigint()¶
返回
x
和y
在二进制补码表示中的按位与运算结果。
- bitwise_not(x) -> bigint()¶
返回
x
在二进制补码表示中的按位非运算结果。
- bitwise_or(x, y) -> bigint()¶
返回
x
和y
在二进制补码表示中的按位或运算结果。
- bitwise_xor(x, y) -> bigint()¶
返回
x
和y
在二进制补码表示中的按位异或运算结果。
- bitwise_shift_left(x, shift, bits) -> bigint()¶
对
x
(视为bits
位整数)执行左移操作,移动shift
位。SELECT bitwise_shift_left(7, 2, 4); -- 12 SELECT bitwise_shift_left(7, 2, 64); -- 28
- bitwise_logical_shift_right(x, shift, bits) -> bigint()¶
对
x
(视为bits
位整数)执行逻辑右移操作,移动shift
位。SELECT bitwise_logical_shift_right(7, 2, 4); -- 1 SELECT bitwise_logical_shift_right(-8, 2, 5); -- 6
- bitwise_arithmetic_shift_right(x, shift) -> bigint()¶
对
x
执行算术右移操作,在二进制补码表示中移动shift
位。SELECT bitwise_arithmetic_shift_right(-8, 2); -- -2 SELECT bitwise_arithmetic_shift_right(7, 2); -- 1
通用移位函数¶
这三个函数接受整数值类型 TINYINT
、SMALLINT
、INTEGER
和 BIGINT
的值,并将它们移动 shift
指定的位数,返回相同整数值类型的值。对于所有三个函数,移动的位数由 shift
参数的最低位给出,shift
参数的较高位被忽略。
- bitwise_left_shift(value, shift) -> [same as value]()¶
返回
value
的左移值。SELECT bitwise_left_shift(TINYINT '7', 2); -- 28 SELECT bitwise_left_shift(TINYINT '-7', 2); -- -28
- bitwise_right_shift(value, shift) -> [same as value]()¶
返回
value
的逻辑右移值。SELECT bitwise_right_shift(TINYINT '7', 2); -- 1 SELECT bitwise_right_shift(SMALLINT -8, 2); -- 16382
- bitwise_right_shift_arithmetic(value, shift) -> [same as value]()¶
返回
value
的算术右移值。SELECT bitwise_right_shift_arithmetic(BIGINT '-8', 2); -- -2 SELECT bitwise_right_shift_arithmetic(SMALLINT '7', 2); -- 1
另请参见 位运算聚合函数 中的 bitwise_and_agg()
和 bitwise_or_agg()
。