Wie drehe ich ein bisschen in SQL Server?

73

Ich versuche ein bitweises NICHT in SQL Server auszuführen. Ich möchte so etwas machen:

update foo
set Sync = NOT @IsNew

Hinweis: Ich habe mit dem Schreiben begonnen und die Antwort auf meine eigene Frage herausgefunden, bevor ich fertig war. Ich wollte immer noch mit der Community teilen, da diese Dokumentation auf MSDN fehlte (bis ich sie auch dort zum Community-Inhalt hinzufügte).

Sogar Mien
quelle
Ich habe das falsch gelesen, glaube ich ... wollte dir sagen, dass du in SQL Server keinen Uturn machen kannst ...: P
Codewerks

Antworten:

111

Ja, der Operator ~ wird funktionieren.

update foo
set Sync = ~@IsNew
Jason Kresowaty
quelle
30

Bitweise NICHT: ~

Bitweises UND: &

Bitweises ODER: |

Bitweises XOR: ^

Sogar Mien
quelle
10

Fehlt MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

~: Führt eine bitweise logische NICHT-Operation für einen ganzzahligen Wert aus. Der ~ bitweise Operator führt ein bitweises logisches NICHT für den Ausdruck aus und nimmt jedes Bit der Reihe nach. Wenn expression den Wert 0 hat, werden die Bits in der Ergebnismenge auf 1 gesetzt. Andernfalls wird das Bit im Ergebnis auf den Wert 0 gelöscht. Mit anderen Worten, Einsen werden in Nullen und Nullen in Einsen geändert.

Blorgbeard ist raus
quelle
D'oh. Ich habe gerade unter bitweisen Operatoren und ~ unären Operatoren gesucht :)
Sogar Mien
2

Der Vollständigkeit halber:

SELECT b, 1 - b
FROM
  (SELECT cast(1 AS BIT) AS b
   UNION ALL
   SELECT cast(0 AS BIT) AS b) sampletable
Oliver
quelle
1

~ Operator funktioniert nur mit BIT,

versuchen Sie: ~ CAST (@IsNew AS BIT)

vitik
quelle