& (ビット演算子 AND) (Transact-SQL)
2 つの整数値の間でビットごとの論理積演算を実行します。
構文
expression & expression
引数
expression
整数型に分類されるデータ型、bit データ型、binary データ型、または varbinary データ型の有効な式です。expression は、ビットごとの演算に対して 2 進数として扱われます。
メモ : |
---|
ビットごとの演算では、1 つの expression のみを binary データ型または varbinary データ型にできます。 |
戻り値の型
入力値が int の場合は int です。
入力値が smallint の場合は smallint です。
入力値が tinyint または bit の場合は tinyint です。
解説
ビットごとの & 演算子は、2 つの式の対応するビットを対象にビットごとの論理積演算を実行します。入力式の中で現在処理の対象にあるビットについて、両方のビットが 1 という値を持つ場合だけ、結果セットのビットは 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
列の間でビットごとの AND を実行します。
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
です。この 2 つの値に対してビットごとの AND を実行すると、結果はバイナリで 0000 0000 0000 1010
、10 進数では 10 になります。
(A & B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 0000 1010
参照
関連項目
式 (Transact-SQL)
演算子 (Transact-SQL)