^ (ビットごとの排他的 OR) (Transact-SQL)
Applies to: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric の SQL 分析エンドポイント Microsoft Fabric のウェアハウス
2 つの整数の間でビットごとの排他的 OR 演算を実行します。
構文
expression ^ expression
引数
式 (expression)
整数データ型に分類されるデータ型のいずれか、または bit、または binary または varbinary データ型の有効な式を指定します。 式は、ビットごとの演算に対して 2 進数として扱われます。
Note
ビットごとの演算では、1 つの式のみが binary または varbinary データ型のいずれかになります。
戻り値の型
入力値が int の場合は int です。
入力値が smallint の場合は smallint です。
入力値が tinyint の場合は tinyint です。
解説
ビットごとの ^ 演算子では、2 つの式の対応するビットを対象に、ビットごとの排他的論理 OR 演算が実行されます。 入力式で現在処理対象となっているビットについて、両方ではなくいずれか一方のビットだけが 1 の場合、結果セットのビットは 1 に設定されます。 両方のビットが 0 または 1 の場合、結果セットのビットはクリアされて 0 になります。
左側の式と右側の式が異なる整数型の場合 (たとえば、左側の式が smallint 型で、右側の式が int 型の場合)、小さいデータ型の引数が大きいデータ型の引数に変換されます。 この場合、smallint "式" は int に変換されます。
例
次の例では、int データ型を使用して元の値を格納するテーブルを作成し、1 行に 2 つの値を挿入します。
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 を実行します。
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
参照
式 (Transact-SQL)
演算子 (Transact-SQL)
ビットごとの演算子 (Transact-SQL)
^= (ビットごとの排他的 OR 代入) (Transact-SQL)
複合演算子 (Transact-SQL)