83 Stimmen

Wie kann man Bit-Felder in T-SQL spiegeln?

Ich versuche, ein Bit-Feld in SQL Server mithilfe einer Aktualisierungsabfrage umzudrehen, d. h. ich möchte alle 0en in 1en umwandeln und umgekehrt. Was ist die eleganteste Lösung?

Es scheint keinen bitweisen NOT-Operator in T-SQL zu geben (es sei denn, ich übersehe etwas Offensichtliches), und ich habe keine andere Möglichkeit gefunden, die Aktualisierung durchzuführen.

12voto

Saksham Gupta Punkte 350

Ein einfacher bitweiser NOT-Operator (~) funktionierte bei mir in SQL Server 2014 - 12.0.2269.0

In der Aktualisierungsklausel in Ihrem T-SQL -

        Update TableName
        SET    [bitColumnName] = ~[bitColumnName],
               ....
        WHERE  ....

Ich hoffe, das hilft

Ref - https://docs.microsoft.com/en-us/sql/t-sql/language-elements/bitwise-not-transact-sql

1voto

eKek0 Punkte 22479

Haben Sie das versucht?

UPDATE mytable SET somecolumn = 
  CASE WHEN somecolumn = 0 THEN 1 
       WHEN somecolumn IS NULL THEN NULL
       WHEN somecolumn = 1 THEN 0
  END

1voto

Nasa Rahman Punkte 11

Abfrage (vb)

x = "select x from table"

update (vb)

"update table set x=" Not(x*(1))

0 Stimmen

Dies ist nicht gehen, um auch in vb arbeiten und die Frage ist für t-sql

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X