ビット操作関数

適用対象:SQL Server 2022 (16.x)Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

整数またはバイナリ値内の単一ビットの移動、取得、設定、カウントなどのビット操作関数を使うと、個々のビットより効率的にデータを処理して格納できます。

"ビット" には 2 つの値 1 または 0 があり、それぞれ on またはoff や、true または false を表します。 "バイト" は 8 個のビットのシーケンスで構成されます。 SQL Server のビット操作関数では、バイト内の "左端" のビットが最大 (最上位) として扱われます。 ビット操作関数では、ビットは右から左に番号が付けられ、ビット 0 は右端で最小、ビット 7 は左端で最大です。

たとえば、00000111 というバイナリ シーケンス は 10 進数の 7 に相当します。 これは、次のように 2 の累乗を使って計算できます。

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

これは実際には、SQL Server ではこの値が 11100000 (バイト反転) として格納されますが、ビット操作関数では 00000111 のように扱われることを意味します。

複数バイトの場合は、最初のバイト (左から右に見て) が最大です。

次の図を見ると、SQL Server のビット操作関数でビットとバイト式の値およびビット オフセットがどのように解釈されるかがわかります。

int

Diagram showing an int value where 4 bytes represent the reversed binary of each byte from left to right.

smallint

Diagram showing a small int value where the first byte represents bits 15 to 8, and the second byte represents bits 7 to 0.

関数

SQL Server でビットを操作するには、次の 5 つの関数を使用できます。

5 つの関数はすべて、tinyintsmallintintbigintbinary(n)varbinary(n) の各データ型で動作するようになっています。

varcharnvarcharimagentexttextxmltable の各型はサポートされていません。

注釈

この最初の実装では、リンク サーバー内のビット操作関数またはアドホック クエリ (OPENQUERY) に対する分散クエリ機能はサポートされません。