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

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

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

Transact-SQL 構文表記規則

Syntax

expression & expression

Arguments

expression

整数データ型カテゴリの任意のデータ型、ビットまたはバイナリまたは varbinary データ型の任意の有効なは、ビットごとの演算に対して 2 進数として扱われます。

Note

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

戻り値の型

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

Remarks

&ビットごとの演算子は、2 つの式の間でビットごとの論理ANDを実行し、両方の式に対応する各ビットを受け取ります。 結果のビットは、入力式の両方のビット (解決される現在のビット) の値が 1 の場合にのみ、1に設定されます。 それ以外の場合、結果のビットは 0に設定されます。

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

Examples

次の例では、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

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