^ (Bitwise Exclusive OR) (Transact-SQL)

Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL analytics endpoint in Microsoft Fabric Warehouse in Microsoft Fabric SQL database in Microsoft Fabric

Performs a bitwise exclusive OR operation between two integer values.

Transact-SQL syntax conventions

Syntax

expression ^ expression  

Arguments

expression
Is any valid expression of any one of the data types of the integer data type category, or the bit, or the binary or varbinary data types. expression is treated as a binary number for the bitwise operation.

Note

Only one expression can be of either binary or varbinary data type in a bitwise operation.

Result Types

int if the input values are int.

smallint if the input values are smallint.

tinyint if the input values are tinyint.

Remarks

The ^ bitwise operator performs a bitwise logical exclusive OR between the two expressions, taking each corresponding bit for both expressions. The bits in the result are set to 1 if either (but not both) bits (for the current bit being resolved) in the input expressions have a value of 1. If both bits are 0 or both bits are 1, the bit in the result is cleared to a value of 0.

If the left and right expressions have different integer data types (for example, the left expression is smallint and the right expression is int), the argument of the smaller data type is converted to the larger data type. In this case, the smallint expression is converted to an int.

Examples

The following example creates a table using the int data type to store the original values and inserts two values into one row.

CREATE TABLE bitwise (   
  a_int_value INT NOT NULL,  
  b_int_value INT NOT NULL);
GO  
INSERT bitwise VALUES (170, 75);  
GO  

The following query performs the bitwise exclusive OR on the a_int_value and b_int_value columns.

SELECT a_int_value ^ b_int_value  
FROM bitwise;  
GO  

Here is the result set:

-----------   
225           
  
(1 row(s) affected)  

The binary representation of 170 (a_int_value or A) is 0000 0000 1010 1010. The binary representation of 75 (b_int_value or B) is 0000 0000 0100 1011. Performing the bitwise exclusive OR operation on these two values produces the binary result 0000 0000 1110 0001, which is decimal 225.

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

See Also

Expressions (Transact-SQL)
Operators (Transact-SQL)
Bitwise Operators (Transact-SQL)
^= (Bitwise Exclusive OR Assignment) (Transact-SQL)
Compound Operators (Transact-SQL)