Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
Azure Synapse Analytics
Elemzési platformrendszer (PDW)
SQL Analytics-végpont a Microsoft Fabricben
Raktár a Microsoft Fabricben
SQL-adatbázis a Microsoft Fabricben
Bitenkénti logikai NOT műveletet hajt végre egész számértéken.
Transact-SQL szintaxis konvenciók
Syntax
~ expression
Arguments
expression
Az egész szám adattípus kategóriájának, bitjének vagy bináris vagy varbináris adattípusának bármely adattípusának érvényes kifejezése.
a bitenkénti művelet bináris számként kezeli.
Note
Egy bitenkénti műveletben csak egy kifejezés lehet bináris vagy varbináris adattípusú.
Eredménytípusok
int , ha a bemeneti értékek int.
kicsi, ha a bemeneti értékek kicsik.
tinyint , ha a bemeneti értékek aprók.
bit , ha a bemeneti értékek bitek.
Remarks
A ~ bitenkénti operátor bitenkénti logikai NEM műveletet hajt végre a kifejezéshez, és minden bitet egymás után vesz fel. Ha a kifejezés értéke 0, az eredményhalmaz bitjei értéke 1; ellenkező esetben az eredmény bitje 0 értékre lesz törölve. Más szóval a nullák nullákra változnak, a nullák pedig a nullákra.
Important
Ha bármilyen bitenkénti műveletet hajt végre, a bitenkénti műveletben használt kifejezés tárolási hossza fontos. Az értékek tárolásakor azt javasoljuk, hogy ugyanannyi bájtot használjon. Ha például az 5-ös tizedesjegyet apró,kicsi vagy int értékként tárolja, akkor az érték különböző bájtszámmal van tárolva: a tinyint 1 bájttal tárolja az adatokat; a smallint 2 bájt használatával tárolja az adatokat, a int pedig 4 bájttal tárolja az adatokat. Ezért a bitenkénti művelet int decimális értéken való végrehajtása eltérő eredményeket eredményezhet a közvetlen bináris vagy hexadecimális fordítást használóktól, különösen akkor, ha a ~ (bitenkénti NEM) operátort használja. A bitenkénti NOT művelet rövidebb hosszúságú változókon fordulhat elő. Ebben az esetben, ha a rövidebb hossz hosszabb adattípusú változóvá alakul át, előfordulhat, hogy a felső 8 bit bitjei nem a várt értékre lesznek állítva. Javasoljuk, hogy konvertálja a kisebb adattípus változót a nagyobb adattípusra, majd hajtsa végre a NOT műveletet az eredményen.
Examples
Az alábbi példa egy táblázatot hoz létre az int adattípussal az értékek tárolásához, és a két értéket egy sorba szúrja be.
CREATE TABLE bitwise (
a_int_value INT NOT NULL,
b_int_value INT NOT NULL);
GO
INSERT bitwise VALUES (170, 75);
GO
Az alábbi lekérdezés a bitenkénti NOT műveletet hajtja végre az oszlopokon és a_int_value az b_int_value oszlopokon.
SELECT ~ a_int_value, ~ b_int_value
FROM bitwise;
Az eredményhalmaz a következő:
--- ---
-171 -76
(1 row(s) affected)
A 170 (a_int_value vagy A) bináris ábrázolása az 0000 0000 0000 0000 0000 0000 1010 1010. A bitenkénti NOT művelet végrehajtása ezen az értéken létrehozza a bináris eredményt 1111 1111 1111 1111 1111 1111 0101 0101, amely decimális -171. A 75 bináris reprezentációja a 0000 0000 0000 0000 0000 0000 0100 1011. A bitenkénti NOT művelet végrehajtása -76 decimális értéket eredményez 1111 1111 1111 1111 1111 1111 1011 0100.
(~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
Lásd még:
Kifejezések (Transact-SQL)
Operátorok (Transact-SQL)
Bitenkénti operátorok (Transact-SQL)