SQL 位操作,将倒数第二个位更改为 0



我有很多带有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

相关内容

最新更新