位元函數¶
- 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
的位元 AND 結果。
- bitwise_not(x) -> bigint()¶
傳回以二補數表示法表示的
x
的位元 NOT 結果。
- bitwise_or(x, y) -> bigint()¶
傳回以二補數表示法表示的
x
和y
的位元 OR 結果。
- bitwise_xor(x, y) -> bigint()¶
傳回以二補數表示法表示的
x
和y
的位元 XOR 結果。
- 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) -> [與值相同]()¶
傳回
value
的左移值SELECT bitwise_left_shift(TINYINT '7', 2); -- 28 SELECT bitwise_left_shift(TINYINT '-7', 2); -- -28
- bitwise_right_shift(value, shift) -> [與值相同]()¶
傳回
value
的邏輯右移值SELECT bitwise_right_shift(TINYINT '7', 2); -- 1 SELECT bitwise_right_shift(SMALLINT -8, 2); -- 16382
- bitwise_right_shift_arithmetic(value, shift) -> [與值相同]()¶
傳回
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()
在 位元彙總函數中。