| (Побитовое ИЛИ) (Transact-SQL)
Выполняет поразрядную логическую операцию OR для двух указанных целочисленных значений, которые преобразуются в двоичные выражения в инструкциях Transact-SQL.
Соглашения о синтаксисе в Transact-SQL
Синтаксис
expression | expression
Аргументы
expression
Любое допустимое выражение, имеющее целочисленный тип данных, либо тип bit, binary или varbinary. Аргумент expression трактуется как двоичное числовое значение для выполнения побитовой операции.Примечание. В побитовой операции только один из аргументов expression может иметь тип binary или varbinary.
Замечания
Побитовый оператор «|» выполняет логическую операцию OR над двумя выражениями, получая из них результат поразрядно. Каждый бит результата устанавливаются в 1, если хотя бы один из исходных битов равен 1. Если оба исходных бита равны 0, бит результата будет равен нулю.
Если левое и правое выражения имеют разные целочисленные типы (например, аргумент expression слева имеет тип smallint, а expression справа — int), аргумент меньшего типа преобразуется в больший тип данных. В следующем примере имеющий тип smallint аргумент expression приводится к типу int.
Типы результата
Возвращает int, если входные значения имеют тип int; smallint, если входные значения имеют тип smallint; или tinyint, если входные значения имеют тип tinyint.
Примеры
В следующем примере производится создание таблицы с двумя столбцами исходных значений типа 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
Следующий запрос выполняет побитовую операцию OR над столбцами a_int_value и b_int_value.
USE tempdb;
GO
SELECT a_int_value | b_int_value
FROM bitwise;
GO
Ниже приводится результирующий набор.
-----------
235
(1 row(s) affected)
Двоичное представление числа 170 (a_int_value или A
, ниже) равно 0000 0000 1010 1010
. Двоичное представление числа 75 (b_int_value или B
, ниже) равно 0000 0000 0100 1011
. При выполнении побитовой операции OR над этими двумя значениями получается двоичный результат 0000 0000 1110 1011
, что соответствует десятичному значению 235.
(A | B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 1011