--- description: "& (Bitwise AND) (Transact-SQL)" title: "& (Bitwise AND) (Transact-SQL) | Microsoft Docs" ms.custom: "" ms.date: "01/10/2017" ms.prod: sql ms.prod_service: "database-engine, sql-database, sql-data-warehouse, pdw" ms.reviewer: "" ms.technology: t-sql ms.topic: reference f1_keywords: - "bitwise" - "&" - "&_TSQL" dev_langs: - "TSQL" helpviewer_keywords: - "AND, bitwise AND" - "& (bitwise AND)" - "bitwise AND (&)" ms.assetid: 20275755-4fa7-47b1-a9be-ac85606d63b0 author: cawrites ms.author: chadam monikerRange: ">=aps-pdw-2016||=azuresqldb-current||=azure-sqldw-latest||>=sql-server-2016||>=sql-server-linux-2017||=azuresqldb-mi-current" --- # & (Bitwise AND) (Transact-SQL) [!INCLUDE [sql-asdb-asdbmi-asa-pdw](../../includes/applies-to-version/sql-asdb-asdbmi-asa-pdw.md)] Performs a bitwise logical AND operation between two integer values. ![Topic link icon](../../database-engine/configure-windows/media/topic-link.gif "Topic link icon") [Transact-SQL Syntax Conventions](../../t-sql/language-elements/transact-sql-syntax-conventions-transact-sql.md) ## Syntax ```syntaxsql expression & expression ``` [!INCLUDE[sql-server-tsql-previous-offline-documentation](../../includes/sql-server-tsql-previous-offline-documentation.md)] ## Arguments *expression* Is any valid [expression](../../t-sql/language-elements/expressions-transact-sql.md) of any 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] > In a bitwise operation, only one *expression* can be of either **binary** or **varbinary** data type. ## Result Types **int** if the input values are **int**. **smallint** if the input values are **smallint**. **tinyint** if the input values are **tinyint** or **bit**. ## Remarks The **&** bitwise operator performs a bitwise logical AND between the two expressions, taking each corresponding bit for both expressions. The bits in the result are set to 1 if and only if both bits (for the current bit being resolved) in the input expressions have a value of 1; otherwise, the bit in the result is set to 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 values and inserts two values into one row. ```sql CREATE TABLE bitwise ( a_int_value INT NOT NULL, b_int_value INT NOT NULL); GO INSERT bitwise VALUES (170, 75); GO ``` This query performs the bitwise AND between the `a_int_value` and `b_int_value` columns. ```sql SELECT a_int_value & b_int_value FROM bitwise; GO ``` Here is the result set: ``` ----------- 10 (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 AND operation on these two values produces the binary result `0000 0000 0000 1010`, which is decimal 10. ``` (A & B) 0000 0000 1010 1010 0000 0000 0100 1011 ------------------- 0000 0000 0000 1010 ``` ## See Also [Expressions (Transact-SQL)](../../t-sql/language-elements/expressions-transact-sql.md) [Operators (Transact-SQL)](../../t-sql/language-elements/operators-transact-sql.md) [Bitwise Operators (Transact-SQL)](../../t-sql/language-elements/bitwise-operators-transact-sql.md) [&= (Bitwise AND Assignment) (Transact-SQL)](../../t-sql/language-elements/bitwise-and-equals-transact-sql.md) [Compound Operators (Transact-SQL)](../../t-sql/language-elements/compound-operators-transact-sql.md)