Как мне немного перевернуть в SQL Server? - PullRequest
63 голосов
/ 05 октября 2008

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

update foo
set Sync = NOT @IsNew

Примечание: я начал писать это и узнал ответ на свой вопрос еще до того, как закончил. Я все еще хотел поделиться с сообществом, так как эта часть документации отсутствовала в MSDN (пока я не добавил ее и в контент сообщества).

Ответы [ 4 ]

96 голосов
/ 05 октября 2008

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

update foo
set Sync = ~@IsNew
25 голосов
/ 05 октября 2008

Поразрядно НЕ: ~

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

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

Побитовый XOR: ^

9 голосов
/ 05 октября 2008

не хватает на MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

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

2 голосов
/ 06 августа 2013

Ради полноты:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...