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