Como faço para virar um pouco no SQL Server?
-
05-07-2019 - |
Pergunta
Eu estou tentando executar um bit a bit NÃO no SQL Server. Eu gostaria de fazer algo parecido com isto:
update foo
set Sync = NOT @IsNew
Nota: comecei a escrever este e descobriu a resposta à minha pergunta antes de eu terminar. Eu ainda queria compartilhar com a comunidade, uma vez que este pedaço de documentação que faltava no MSDN (até que eu adicionei-lo para o Conteúdo da Comunidade há, também).
Solução
Sim, o operador ~ vai funcionar.
update foo
set Sync = ~@IsNew
Outras dicas
Bitwise NÃO: ~
Bitwise E: &
Bitwise OR: |
XOR: ^
Na falta no MSDN? http://msdn.microsoft.com/en-us /library/ms173468(SQL.90).aspx
~: executa uma operação lógica NOT bit a bit em um valor inteiro. Os ~ executa operador bit a bit a bit a bit não é lógico para a expressão, tendo cada bit de cada vez. Se a expressão tem um valor de 0, os bits no conjunto de resultados são o valor 1; caso contrário, o bit no resultado é liberado para um valor de 0. Em outras palavras, aqueles são alterados para zeros e zeros são alterados para queridos.
Por uma questão de exaustividade:
SELECT b, 1 - b
FROM
(SELECT cast(1 AS BIT) AS b
UNION ALL
SELECT cast(0 AS BIT) AS b) sampletable