我有很多带有bigint(长度20(的行,我必须每隔一段时间将最后一位更改为0。例如,我有:0101 1011,我需要的结果是:0101 1001问题是,这些数字是"随机的",我无法计算-2(10(。
您可以使用
按位 AND 运算符 ( &
(,AND
NOT 2(使用按位反转运算符 ( ~
(创建(来获得结果,例如
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
在 dbfiddle 上演示
您可以使用"按位和"运算符来更改位。
https://learn.microsoft.com/en-us/sql/t-sql/language-elements/bitwise-operators-transact-sql?view=sql-server-2017