Как я могу перевернуть немного в SQL Server?


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

update foo
set Sync = NOT @IsNew

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

4 60

4 ответа:

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

update foo
set Sync = ~@IsNew

побитовое не ~

побитовое и: &

побитовое или: |

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

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

~: выполняет побитовую логическую операцию 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