対象者: SQL Server 2022 (16.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in 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
smallint
Functions
SQL Server でビットを操作するには、次の 5 つの関数を使用できます。
5 つの関数はすべて、tinyint、smallint、int、bigint、binary(n)、varbinary(n) の各データ型で動作するようになっています。
varchar、nvarchar、image、ntext、text、xml、table の各型はサポートされていません。
注釈
この最初の実装では、リンク サーバー内のビット操作関数またはアドホック クエリ (OPENQUERY) に対する分散クエリ機能はサポートされません。