Я пытаюсь выполнить побитовое НЕ в SQL Server. Я бы хотел сделать что-то вроде этого:
update foo
set Sync = NOT @IsNew
Примечание: я начал писать это и узнал ответ на свой вопрос еще до того, как закончил. Я все еще хотел поделиться с сообществом, так как этой части документации не хватало на MSDN (пока я тоже не добавил ее в Контент сообщества).
Другая статья: blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/…


Побитовое НЕ: ~
Побитовое И: &
Поразрядное ИЛИ: |
Побитовое исключающее ИЛИ: ^
Не хватает MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx
~: Performs a bitwise logical NOT operation on an integer value. The ~ bitwise operator performs a bitwise logical NOT for the expression, taking each bit in turn. If expression has a value of 0, the bits in the result set are set to 1; otherwise, the bit in the result is cleared to a value of 0. In other words, ones are changed to zeros and zeros are changed to ones.
Ооо. Я только что посмотрел под поразрядными операторами и ~ унарными операторами :)
Да, оператор ~ будет работать.
update foo
set Sync = ~@IsNew
Для полноты:
SELECT b, 1 - b
FROM
(SELECT cast(1 AS BIT) AS b
UNION ALL
SELECT cast(0 AS BIT) AS b) sampletable
~ оператор будет работать только с BIT,
пытаться: ~ CAST (@IsNew AS BIT)
Я неправильно прочитал, я думаю ... собирался сказать вам, что вы не можете сделать Uturn в SQL Server ...: P