次の方法で共有


^ (ビットごとの排他的 OR) (Transact-SQL)

2 つの整数の間でビットごとの排他的 OR 演算を実行します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

 expression ^ expression

引数

  • expression
    整数型に分類されるデータ型、bit データ型、binary データ型、または varbinary 型の有効なを指定します。expression は、ビットごとの演算では 2 進数として処理されます。

    注意

    ビットごとの演算で binary データ型または varbinary データ型として指定できる expression は、1 つだけです。

戻り値の型

入力値が int の場合は int になります。

入力値が smallint の場合は smallint になります。

入力値が tinyint の場合は tinyint になります。

説明

ビットごとの ^ 演算子では、2 つの式の対応するビットを対象に、ビットごとの排他的論理 OR 演算が実行されます。入力式で現在処理対象となっているビットについて、両方ではなくいずれか一方のビットだけが 1 の場合、結果セットのビットは 1 に設定されます。両方のビットが 0 または 1 の場合、結果セットのビットはクリアされて 0 になります。

左側の式と右側の式が異なる整数型の場合 (たとえば、左側の expression が smallint 型で、右側の expression が int 型の場合)、小さいデータ型の引数が大きいデータ型の引数に変換されます。この場合は、smallint 型の expression が int 型に変換されます。

次の例では、int データ型を使用して元の値を格納するテーブルを作成し、1 行に 2 つの値を挿入します。

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 列との間でビットごとの排他的論理 OR を実行します。

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 になります。2 つの値に対してビットごとの排他的論理 OR 演算を実行すると、バイナリで 0000 0000 1110 0001 が生成されます。これは 10 進数では 225 です。

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