& (ビットごとの AND) (Transact-SQL)

適用対象:yesSQL Server (サポートされているすべてのバージョン) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

2 つの整数値の間でビットごとの論理積演算を実行します。

Topic link iconTransact-SQL 構文表記規則

構文

expression & expression  

Note

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

式 (expression)
整数データ型に分類されるデータ型のいずれか、または bit、または binary または varbinary データ型の有効なを指定します。 は、ビットごとの演算に対して 2 進数として扱われます。

Note

ビットごとの演算では、1 つののみが binary または varbinary データ型のいずれかになります。

戻り値の型

入力値が int の場合は int です。

入力値が smallint の場合は smallint です。

入力値が tinyint または bit の場合は tinyint です。

解説

ビットごとの & 演算子は、2 つの式の対応するビットを対象にビットごとの論理積演算を実行します。 入力式の中で現在処理の対象にあるビットについて、両方のビットが 1 という値を持つ場合だけ、結果セットのビットは 1 に設定されます。それ以外の場合、結果は 0 に設定されます。

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

次の例では、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 列の間でビットごとの AND を実行します。

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 つの値に対してビットごとの論理積演算を実行すると、結果はバイナリで 0000 0000 0000 1010、10 進数では 10 になります。

(A & B)  
0000 0000 1010 1010  
0000 0000 0100 1011  
-------------------  
0000 0000 0000 1010  

参照

式 (Transact-SQL)
演算子 (Transact-SQL)
ビットごとの演算子 (Transact-SQL)
&= (ビットごとの AND 代入) (Transact-SQL)
複合演算子 (Transact-SQL)