Битовая операция SQL, измените второй последний бит на 0 - PullRequest
0 голосов
/ 26 марта 2019

У меня много строк с большой буквой (длина 20), и мне нужно менять каждую секунду последний бит на 0. Например, у меня есть: 0101 1011 и результат мне нужен: 0101 1001 Проблема в том, что числа «случайные», и я не могу вычислить -2 (10).

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Вы можете использовать побитовый оператор AND (&), AND ing with 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

0 голосов
/ 26 марта 2019

Вы можете использовать оператор «Побитовое И» для изменения бита.

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/bitwise-operators-transact-sql?view=sql-server-2017

...