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

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

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

Бит, который я хочу перевернуть: 1 << 8 (256)

Значение маски перед переворачиванием: 143

Значение маски после переворачивания: 399

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

2 ответа

Решение

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

SELECT value ^ 256

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

SELECT value ^ POWER(2, power)

Битовые операторы TSql можно найти здесь, а хорошая статья о том, как их использовать - здесь

Другие вопросы по тегам