Поделиться через


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

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

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

expression & expression

Аргументы

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

    ms174965.note(ru-ru,SQL.90).gifПримечание.
    В побитовой операции только одно выражение expression может иметь тип данных либо binary, либо varbinary.

Замечания

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

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

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

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

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

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

Примеры

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

USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_NAME = 'bitwise')
   DROP TABLE bitwise;
GO
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.

USE tempdb;
GO
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)

Другие ресурсы

Битовые операторы (ядро СУБД)

Справка и поддержка

Получение помощи по SQL Server 2005