SQL 位运算,将倒数第二位变为0
SQL Bit operation, change second last bit to 0
我有很多行都带有 bigint(长度 20),我必须将每一秒的最后一位更改为 0。
例如我有:0101 1011 我需要的结果是:0101 1001
问题是,数字是 "random" 而我无法计算 -2(10).
您可以使用 "Bitwise And" 运算符更改位。
您可以使用按位与运算符 (&
), AND
ing with NOT 2 (created using the bitwise inversion operator (~
)) 来获取结果,例如
CREATE TABLE test (num BIGINT(20));
INSERT INTO test VALUES
(4),
(91),
(9223372036854775807);
SELECT num, num & ~2 FROM test;
输出:
num num & ~2
4 4
91 89
9223372036854775807 9223372036854775805
我有很多行都带有 bigint(长度 20),我必须将每一秒的最后一位更改为 0。 例如我有:0101 1011 我需要的结果是:0101 1001 问题是,数字是 "random" 而我无法计算 -2(10).
您可以使用 "Bitwise And" 运算符更改位。
您可以使用按位与运算符 (&
), AND
ing with NOT 2 (created using the bitwise inversion operator (~
)) 来获取结果,例如
CREATE TABLE test (num BIGINT(20));
INSERT INTO test VALUES
(4),
(91),
(9223372036854775807);
SELECT num, num & ~2 FROM test;
输出:
num num & ~2
4 4
91 89
9223372036854775807 9223372036854775805