& (побитовое И) (Transact-SQL)

Область применения:yesSQL Server (все поддерживаемые версии) YesБаза данных SQL Azure YesУправляемый экземпляр SQL Azure yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

Выполняет побитовую логическую операцию «И» между двумя целочисленными значениями.

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

expression & expression  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

expression
Любое допустимое выражение любого типа данных из категории целочисленных типов или bit либо типов данных binary или varbinary. expression трактуется как двоичное числовое значение для выполнения побитовой операции.

Примечание

В побитовой операции только одно выражение expression может иметь тип binary или varbinary.

Типы результата

int, если входные значения имеют тип int.

smallint, если входные значения имеют тип smallint.

tinyint, если входные значения имеют тип tinyint или bit.

Remarks

Побитовый оператор & выполняет побитовую логическую операцию И с соответствующими битами двух выражений. Значение результирующих битов устанавливается равным 1 только в том случае, если оба бита (для текущего разрешаемого бита) в переданных выражениях имеют значение 1; в остальных случаях значение результирующего бита устанавливается равным 0.

Если левое и правое выражения принадлежат к различным целочисленным типам данных (например, левое выражение expression — к типу smallint, а правое выражение expression — к типу int), аргумент более короткого типа данных преобразовывается в более длинный тип данных. В этом случае smallintexpression преобразовывается в тип int.

Примеры

В приведенном ниже примере создается таблица с использованием типа данных int для хранения значений, и два значения вставляются в одну строку.

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

В этом запросе побитовое И выполняется на столбцах a_int_value и b_int_value.

SELECT a_int_value & b_int_value  
FROM bitwise;  
GO  

Результирующий набор:

-----------   
10            
  
(1 row(s) affected)  

Двоичное представление числа 170 (a_int_value или A) — 0000 0000 1010 1010. Двоичное представление числа 75 (b_int_value или B) — 0000 0000 0100 1011. Выполнение побитовой операции И в отношении этих двух значений дает двоичный результат 0000 0000 0000 1010, который имеет десятичное значение 10.

(A & B)  
0000 0000 1010 1010  
0000 0000 0100 1011  
-------------------  
0000 0000 0000 1010  

См. также:

Выражения (Transact-SQL)
Операторы (Transact-SQL)
побитовые операторы (Transact-SQL)
&= (побитовое присваивание И) (Transact-SQL)
Составные операторы (Transact-SQL)