^ (побитовое исключающее ИЛИ) (Transact-SQL)

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

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

Синтаксис

expression ^ expression

Аргументы

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

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

Замечания

Побитовый оператор ^ выполняет операцию побитового логического исключающего ИЛИ между двумя выражениями, последовательно обрабатывая соответствующие биты для двух выражений. Для битов результата устанавливается значение «1», если любой (но не оба) бит (в текущей обрабатываемой паре битов) имеет значение «1». Если значение обоих битов «0» или «1», результат сбрасывается в значение «0».

Если левое и правое выражения принадлежат к различным целым типам данных (например, левый аргумент expression имеет тип smallint, а правый аргумент expression — тип int), то аргумент более короткого типа данных преобразовывается в более длинный тип данных. В нашем случае аргумент expression типа smallint преобразовывается в тип 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

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

USE tempdb;
GO
SELECT a_int_value ^ b_int_value
FROM bitwise;
GO

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

----------- 
225         

(1 row(s) affected)

Двоичное представление числа 170 (a_int_value или A) — 0000 0000 1010 1010. Двоичное представление числа 75 (b_int_value или B) — 0000 0000 0100 1011. При выполнении операции побитового исключающего ИЛИ над этими двумя значениями получается двоичный результат 0000 0000 1110 0001, который является десятичным числом 225.

(A ^ B)   
         0000 0000 1010 1010
         0000 0000 0100 1011
         -------------------
         0000 0000 1110 0001

См. также

Справочник

Выражения (Transact-SQL)
Операторы (Transact-SQL)

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

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

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

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