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

时间:2019-03-26 00:04:55

标签: mysql sql bit operation

我有很多行具有bigint(长度20),并且我必须将第二个最后一位更改为0。 例如我有:0101 1011,我需要的结果是:0101 1001 问题是数字是“随机的”,我无法计算-2(10)。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以使用按位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

Demo on dbfiddle