Операции переворачивания битов в T-SQL

У меня есть битовое поле int в моей базе данных. Обычно я управляю этим через код C #, но теперь мне нужно немного перевернуть маску с помощью T-SQL

Как мне сделать следующее:

The bit I want to flip: 1 << 8 (256)

The mask value before I flip: 143

The mask value after I flip: 399

Это может быть сделано без битовых операторов, которые отсутствуют в T-SQL, верно?

Ответы на вопрос(2)

Решение Вопроса

Используйте XOR:

SELECT value ^ 256

Так что в вашем случае,SELECT 143 ^ 256 действительно вернет 399. Если вы хотите передать также и показатель степени:

SELECT value ^ POWER(2, power)
 Christian Dalager10 июл. 2009 г., 17:29
Спасибо! Это решило мою проблему! Есть ли способ элегантно включить бит? (Я уже сделал это, но выглядит уродливо ...)
 10 июл. 2009 г., 17:31
Вы хотите перевернуть или включить? Flip - использовать XOR (^); включить - используйте ИЛИ (|). Если вы хотите больше элегантности, оберните в кратко названную пользовательскую функцию. :)

Вот и хорошая статья о том, как их использоватьВот

 19 июл. 2017 г., 00:32
верно, это то, что я сказал.
 14 дек. 2016 г., 14:22
Речь идет о переворачивании битов, а не о сдвиге битов.
 14 дек. 2016 г., 09:42
Вопрос в том, чтобы немного сдвинуться, опубликованные вами статьи не имеют к этому никакого отношения.
 18 июл. 2017 г., 16:39
Название ошибочно относится к битовому сдвигу, но актуальный вопрос о битовом флипе.

Ваш ответ на вопрос