Как мне немного перевернуть в SQL Server?
-
05-07-2019 - |
Вопрос
Я пытаюсь выполнить побитовое НЕ в SQL Server. Я хотел бы сделать что-то вроде этого:
update foo
set Sync = NOT @IsNew
Примечание: я начал писать это и узнал ответ на свой вопрос еще до того, как закончил. Я все еще хотел поделиться с сообществом, так как этот фрагмент документации отсутствовал в MSDN (пока я тоже не добавил его в Содержимое сообщества).
Решение
Да, оператор ~ будет работать.
update foo
set Sync = ~@IsNew
Другие советы
Побитовое НЕ: ~
Побитовое И: & amp;
Побитовое ИЛИ: |
Побитовый XOR: ^
Не хватает MSDN? http://msdn.microsoft.com/en-us /library/ms173468(SQL.90).aspx р>
~: выполняет побитовую логическую операцию NOT над целочисленным значением. Побитовый оператор выполняет побитовое логическое НЕ для выражения, принимая каждый бит по очереди. Если выражение имеет значение 0, биты в наборе результатов устанавливаются в 1; в противном случае бит в результате очищается до значения 0. Другими словами, единицы меняются на нули, а нули - на единицы.
Ради полноты:
SELECT b, 1 - b
FROM
(SELECT cast(1 AS BIT) AS b
UNION ALL
SELECT cast(0 AS BIT) AS b) sampletable