~ (Bitweises NOT) (Transact-SQL)
Führt eine bitweise logische NOT-Operation für einen ganzzahligen Wert durch.
Transact-SQL-Syntaxkonventionen
Syntax
~ expression
Argumente
Ausdruck (expression)
Bezeichnet jeden gültigen Ausdruck von einem Datentyp aus der ganzzahligen Datentypkategorie oder vom Datentyp bit, binary oder varbinary. expression wird als eine Binärzahl für die bitweise Operation behandelt.
Hinweis: |
---|
Bei einer bitweisen Operation kann nur ein expression vom Datentyp binary oder varbinary sein. |
Hinweise
Mit dem bitweisen ~-Operator wird ein bitweises logisches NOT für expression durchgeführt, indem jedes Bit abgearbeitet wird. Wenn expression den Wert 0 hat, werden die Bits im Resultset auf den Wert 1 festgelegt, andernfalls wird das Ergebnisbit auf den Wert 0 festgelegt. Der Wert 1 wird somit zu 0 geändert und der Wert 0 zu 1.
Wichtig: |
---|
Beim Durchführen aller bitweisen Operationen ist es wichtig, auf die Speicherlänge des Ausdrucks zu achten, der bei der bitweisen Operation verwendet wird. Beim Speichern von Werten wird empfohlen, dieselbe Anzahl von Bytes zu verwenden. Beispielsweise wird beim Speichern des dezimalen Wertes 5 als tinyint, smallint oder int dieser Wert mit unterschiedlicher Byteanzahl abgespeichert: Bei tinyint wird 1 Byte verwendet, bei smallint 2 Bytes, und bei int werden 4 Bytes belegt. Daher kann eine bitweise Operation mit einem dezimalen int-Wert andere Ergebnisse erzeugen als eine direkte binäre oder hexadezimale Umwandlung, besonders bei Verwendung des ~-Operators (bitweises NOT). Eine bitweise NOT-Operation kann auf eine Variable kürzerer Länge angewendet werden. In diesem Fall kann es vorkommen, dass bei der Konvertierung in einen längeren Datentyp die höherwertigen acht Bits nicht auf den erwarteten Wert festgelegt werden. Es wird empfohlen, die Variable mit dem kleineren Datentyp in den größeren Datentyp zu konvertieren und anschließend die NOT-Operation mit dem Ergebnis durchzuführen. |
Ergebnistypen
int, wenn die Eingabewerte int sind.
smallint, wenn die Eingabewerte smallint sind.
tinyint, wenn die Eingabewerte tinyint sind.
bit, wenn die Eingabewerte bit sind.
Beispiele
Im folgenden Beispiel werden eine Tabelle mithilfe des int-Datentyps erstellt, um die Werte zu speichern, und die beiden Werte in eine Zeile eingefügt.
USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise;
GO
CREATE TABLE bitwise
(
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO
Die folgende Abfrage führt das bitweise NOT für die Spalten a_int_value
und b_int_value
durch.
USE tempdb;
GO
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise;
Im Folgenden wird das Resultset aufgeführt:
--- ---
-171 -76
(1 row(s) affected)
Die binäre Darstellung von 170 (a_int_value
oder A
) ist 0000 0000 1010 1010
. Die Durchführung einer bitweisen NOT-Operation mit diesem Wert erzeugt das binäre Ergebnis 1111 1111 0101 0101
, was dem dezimalen Wert -171 entspricht. Die binäre Darstellung von 75 ist 0000 0000 0100 1011
. Die Durchführung der bitweisen NOT-Operation ergibt 1111 1111 1011 0100
, was dem dezimalen Wert -76 entspricht.
(~A)
0000 0000 1010 1010
-------------------
1111 1111 0101 0101
(~B)
0000 0000 0100 1011
-------------------
1111 1111 1011 0100
Siehe auch
Verweis
Ausdrücke (Transact-SQL)
Operatoren (Transact-SQL)
Andere Ressourcen
Bitweise Operatoren (Datenbankmodul)