~ (Bitwise NE) (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Provede bitové logické NOT operace s celočíselnou hodnotou.

Transact-SQL konvence syntaxe

Syntax

~ expression

Arguments

expression

Libovolný platný výraz libovolného z datových typů celočíselné kategorie datového typu, bitu nebo binárního nebo varbinárního datového typu. výraz je považován za binární číslo pro bitovou operaci.

Note

V bitové operaci může být pouze jeden výrazz binárního nebo varbinárního datového typu.

Návratové typy

pokud jsou vstupní hodnoty int.

smallint, pokud jsou vstupní hodnoty malé.

tinyint pokud jsou vstupní hodnoty tinyint.

bit , pokud jsou vstupní hodnoty bit.

Remarks

~ Bitový operátor provádí bitovou logickou NOT funkci výrazu, přičemž každý bit zase přebírá. Pokud má výraz hodnotu 0, bity v sadě výsledků jsou nastaveny na 1. V opačném případě se bit ve výsledku vymaže na hodnotu 0. Jinými slovy se změní na nuly a nuly se změní na nuly.

Important

Při provádění libovolného druhu bitové operace je důležitá délka úložiště výrazu použitého v bitové operaci. Při ukládání hodnot doporučujeme použít stejný počet bajtů. Například uložení desetinné hodnoty 5 jako tinyint, smallint nebo int vytvoří hodnotu uloženou s různými čísly bajtů: tinyint ukládá data pomocí 1 bajtu; smallint ukládá data pomocí 2 bajtů a int ukládá data pomocí 4 bajtů. Proto provádění bitové operace s int desetinnou hodnotou může vést k odlišným výsledkům od těch, které používají přímý binární nebo šestnáctkový překlad, zejména při použití operátoru ~ (bitwise NOT). Bitová NOT operace může nastat v proměnné kratší délky. V takovém případě se při převodu kratší délky na delší proměnnou datového typu nemusí bity v horních 8 bitech nastavit na očekávanou hodnotu. Doporučujeme převést menší proměnnou datového typu na větší datový typ a pak provést NOT operaci s výsledkem.

Examples

Následující příklad vytvoří tabulku pomocí datového typu int k uložení hodnot a vloží tyto dvě hodnoty do jednoho řádku.

CREATE TABLE bitwise
(
    a_int_value INT NOT NULL,
    b_int_value INT NOT NULL
);
GO

INSERT bitwise
VALUES (170, 75);
GO

Následující dotaz provede bitovou bitové operace NOT se a_int_value sloupci a b_int_value sloupci.

SELECT ~a_int_value AS NotA,
       ~b_int_value AS NotB
FROM bitwise;

Tady je soubor výsledků.

NotA   NotB
-----  -----
-171   -76

Binární reprezentace 170 (a_int_value nebo A) je 0000 0000 0000 0000 0000 0000 1010 1010. Provedení bitové NOT operace na této hodnotě vytvoří binární výsledek 1111 1111 1111 1111 1111 1111 0101 0101, což je desítkové -171. Binární reprezentace pro 75 je 0000 0000 0000 0000 0000 0000 0100 1011. Provádění bitové NOT operace vytvoří 1111 1111 1111 1111 1111 1111 1011 0100, což je desítkové -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