^ (Bitwise exklusivt ELLER) (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Utför en bitvis logisk exklusiv OR åtgärd mellan två heltalsvärden.

Transact-SQL syntaxkonventioner

Syntax

expression ^ expression

Arguments

expression

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.

Returtyper

int om indatavärdena är int.

smallint om indatavärdena är småint.

tinyint om indatavärdena är småint.

Remarks

Bitvisoperatorn ^ utför en bitvis logisk exklusivitet OR mellan de två uttrycken och tar varje motsvarande bit för båda uttrycken. Bitarna i resultatet är inställda på 1 om endera (men inte båda) bitar (för den aktuella biten som löses) i indatauttrycken har värdet 1. Om båda bitarna är 0 eller båda bitarna är 1avmarkeras biten i resultatet till värdet 0.

Om vänster- och högeruttrycken har olika heltalsdatatyper (till exempel är det vänstra uttrycketsmallint och det högra uttrycket är int), konverteras argumentet för den mindre datatypen till den större datatypen. I det här fallet konverteras smallint-uttrycket till en int.

Examples

I följande exempel skapas en tabell med datatypen int för att lagra de ursprungliga värdena och infogar två värden 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 exklusivt OR på kolumnerna a_int_value och b_int_value .

SELECT a_int_value ^ b_int_value
FROM bitwise;
GO

Här är resultatet.

-----------
225

Den binära representationen av 170 (a_int_value eller A) är 0000 0000 1010 1010. Den binära representationen av 75 (b_int_value eller B) är 0000 0000 0100 1011. Om du utför den bitvis exklusiva OR åtgärden på dessa två värden genereras det binära resultatet 0000 0000 1110 0001, som är decimalt 225.

(A ^ B)
         0000 0000 1010 1010
         0000 0000 0100 1011
         -------------------
         0000 0000 1110 0001