ビットごとの演算子 (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric のSQL 分析エンドポイント Microsoft Fabric のウェアハウス
ビットごとの演算子は、整数型に分類されるデータ型を持つ 2 つの式に対してビット操作を実行します。
ビットごとの演算子は 2 つの整数値をバイナリ ビットに変換し、各ビットに対して AND
、OR
、または NOT
演算を実行して結果を生成します。 次にその結果を整数に変換します。
たとえば、整数 170
はバイナリの 1010 1010
に変換されます。
整数 75
はバイナリの 0100 1011
に変換されます。
演算子 | ビットごとの数値演算 |
---|---|
AND 任意の位置にあるビットが両方とも 1 の場合、結果は 1 になります。 |
1010 1010 = 1700100 1011 = 75----------------- 0000 1010 = 10 |
OR 任意の位置にあるビットのいずれかが 1 の場合、結果は 1 になります。 |
1010 1010 = 1700100 1011 = 75----------------- 1110 1011 = 235 |
NOT すべてのビット位置にあるビットの値を反転させます。 |
1010 1010 = 170----------------- 0101 0101 = 85 |
次の記事では、データベース エンジンで使用できるビット演算子の詳細が説明されています。
- & (ビット演算 AND)
- &= (ビット演算 AND 代入)
- | (ビットごとの OR)
- |= (ビットごとの OR 代入)
- ^ (ビットごとの排他的 OR)
- ^= (ビットごとの排他的 OR 代入)
- ~ (ビット演算子 NOT)
SQL Server 2022 (16.x) では、次のビット演算子が導入されました。
ビットごとの演算子のオペランドは、整数または image 型を除くバイナリ文字列型に分類されるデータ型です。ただし、両方のオペランドがバイナリ文字列型に分類されるデータ型であってはなりません。 次の表に、サポートされているオペランドのデータ型を示します。
左オペランド | 右オペランド |
---|---|
[バイナリ] | int、smallint、または tinyint |
bit | int、smallint、tinyint、または bit |
bigint | bigint、int、smallint、tinyint、binary、または varbinary |
int | int、smallint、tinyint、binary、または varbinary |
smallint | int、smallint、tinyint、binary、または varbinary |
tinyint | int、smallint、tinyint、binary、または varbinary |
varbinary | int、smallint、または tinyint |