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).


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

Antworten:



30

Bitweise NICHT: ~

Bitweises UND: &

Bitweises ODER: |

Bitweises XOR: ^


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.


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

1

~ Operator funktioniert nur mit BIT,

versuchen Sie: ~ CAST (@IsNew AS BIT)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.