Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Utför en bitvis logisk NOT-åtgärd på ett heltalsvärde.
Transact-SQL syntaxkonventioner
Syntax
~ expression
Arguments
expression
Är ett giltigt uttryck för någon av datatyperna i heltalsdatatypen kategori, bit eller binära eller varbinära datatyper.
uttrycket behandlas som ett binärt tal för bitvis-åtgärden.
Note
Endast ett uttryck kan vara av antingen binär eller varbinär datatyp i en bitvis åtgärd.
Result Types
int om indatavärdena är int.
smallint om indatavärdena är småint.
tinyint om indatavärdena är småint.
bit om indatavärdena är bit.
Remarks
Bitvisoperatorn ~ utför en bitvis logisk NOT för uttrycket och tar varje bit i tur och ordning. Om uttrycket har värdet 0 anges bitarna i resultatuppsättningen till 1. Annars rensas biten i resultatet till värdet 0. Med andra ord ändras de till nollor och nollor ändras till ettor.
Important
När du utför någon typ av bitvis åtgärd är lagringslängden för uttrycket som används i bitvis-åtgärden viktig. Vi rekommenderar att du använder samma antal byte när du lagrar värden. Om du till exempel lagrar decimalvärdet 5 som en litenint, smallint eller int skapas ett värde som lagras med olika antal byte: tinyint lagrar data med 1 byte; smallint lagrar data med 2 byte och int lagrar data med 4 byte. Därför kan en bitvis åtgärd på ett int decimalvärde ge olika resultat från dem som använder en direkt binär eller hexadecimal översättning, särskilt när ~ operatorn (bitvis INTE) används. Bitvis NOT-åtgärden kan inträffa på en variabel med kortare längd. I det här fallet, när den kortare längden konverteras till en längre datatypvariabel, kanske bitarna i de övre 8 bitarna inte anges till det förväntade värdet. Vi rekommenderar att du konverterar den mindre datatypvariabeln till den större datatypen och sedan utför åtgärden NOT på resultatet.
Examples
I följande exempel skapas en tabell med datatypen int för att lagra värdena och infogar de två värdena i en rad.
CREATE TABLE bitwise (
a_int_value INT NOT NULL,
b_int_value INT NOT NULL);
GO
INSERT bitwise VALUES (170, 75);
GO
Följande fråga utför bitvis INTE på kolumnerna a_int_value och b_int_value .
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise;
Här är resultatuppsättningen:
--- ---
-171 -76
(1 row(s) affected)
Den binära representationen av 170 (a_int_value eller A) är 0000 0000 0000 0000 0000 0000 1010 1010. Om du utför åtgärden BITVIS INTE på det här värdet genereras det binära resultatet 1111 1111 1111 1111 1111 1111 0101 0101, som är decimal -171. Den binära representationen för 75 är 0000 0000 0000 0000 0000 0000 0100 1011. Om du utför åtgärden BITVIS INTE genereras 1111 1111 1111 1111 1111 1111 1011 0100, vilket är decimal -76.
(~A)
0000 0000 0000 0000 0000 0000 1010 1010
---------------------------------------
1111 1111 1111 1111 1111 1111 0101 0101
(~B)
0000 0000 0000 0000 0000 0000 0100 1011
---------------------------------------
1111 1111 1111 1111 1111 1111 1011 0100
See Also
Expressions (Transact-SQL)
Operators (Transact-SQL)
Bitvisoperatorer (Transact-SQL)