Compound Operators (Transact-SQL)

Applies To: Azure SQL Database, SQL Server (starting with 2008)

THIS TOPIC APPLIES TO:SQL Server (starting with 2008)Azure SQL DatabaseAzure SQL Data Warehouse Parallel Data Warehouse

Compound operators execute some operation and set an original value to the result of the operation. For example, if a variable @x equals 35, then @x += 2 takes the original value of @x, add 2 and sets @x to that new value (37).

Transact-SQL provides the following compound operators:

+=+= (Add EQUALS) (Transact-SQL)Adds some amount to the original value and sets the original value to the result.
-=-= (Subtract EQUALS) (Transact-SQL)Subtracts some amount from the original value and sets the original value to the result.
*=*= (Multiply EQUALS) (Transact-SQL)Multiplies by an amount and sets the original value to the result.
/=(Divide EQUALS) (Transact-SQL)Divides by an amount and sets the original value to the result.
%=Modulo EQUALS (Transact-SQL)Divides by an amount and sets the original value to the modulo.
&=&= (Bitwise AND EQUALS) (Transact-SQL)Performs a bitwise AND and sets the original value to the result.
^=^= (Bitwise Exclusive OR EQUALS) (Transact-SQL)Performs a bitwise exclusive OR and sets the original value to the result.
|=|= (Bitwise OR EQUALS) (Transact-SQL)Performs a bitwise OR and sets the original value to the result.

Syntax

```
expression operator expression

```

Arguments

expression
Is any valid expression of any one of the data types in the numeric category.

Result Types

Returns the data type of the argument with the higher precedence. For more information, see Data Type Precedence (Transact-SQL).

Examples

The following examples demonstrate compound operations.

```DECLARE @x1 int = 27;
SET @x1 += 2 ;

DECLARE @x2 int = 27;
SET @x2 -= 2 ;
SELECT @x2 AS Subtracted_2;

DECLARE @x3 int = 27;
SET @x3 *= 2 ;
SELECT @x3 AS Multiplied_by_2;

DECLARE @x4 int = 27;
SET @x4 /= 2 ;
SELECT @x4 AS Divided_by_2;

DECLARE @x5 int = 27;
SET @x5 %= 2 ;
SELECT @x5 AS Modulo_of_27_divided_by_2;

DECLARE @x6 int = 9;
SET @x6 &= 13 ;
SELECT @x6 AS Bitwise_AND;

DECLARE @x7 int = 27;
SET @x7 ^= 2 ;
SELECT @x7 AS Bitwise_Exclusive_OR;

DECLARE @x8 int = 27;
SET @x8 |= 2 ;
SELECT @x8 AS Bitwise_OR;

```