Как перевернуть бит в SQL Server?

Я пытаюсь выполнить побитовое НЕ в SQL Server. Я хотел бы сделать что-то вроде этого:

update foo
set Sync = NOT @IsNew

Примечание. Я начал писать это и узнал ответ на свой вопрос, прежде чем закончил. Я по-прежнему хотел поделиться с сообществом, поскольку в документации MSDN не было документации, до тех пор, пока я не добавил ее в Содержимое Сообщества.

Ответ 1

Да, оператор ~ будет работать.

update foo
set Sync = [email protected]

Ответ 2

Побитовое NOT: ~

Побитовое И: &

Побитовое ИЛИ: |

Побитовое XOR: ^

Ответ 3

Отсутствие MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

~: Выполняет побитовое логическое НЕ-операцию для целочисленного значения. Побитовый оператор выполняет побитовое логическое НЕ для выражения, беря каждый бит по очереди. Если выражение имеет значение 0, биты в результирующем наборе равны 1; в противном случае бит в результате очищается до значения 0. Другими словами, они меняются на нули, а нули изменяются на единицы.

Ответ 4

Для полноты:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable

Ответ 5

~ оператор будет работать только с BIT,

попробуйте: ~ CAST (@IsNew AS BIT)