対象者: 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
BIT_COUNT は 1 つのパラメーターを受け取り、そのパラメーターで 1 に設定されたビット数を、bigint 型として返します。
構文
BIT_COUNT ( expression_value )
引数
expression_value
ラージ オブジェクトではない任意の整数式またはバイナリ式 (LOB)。
戻り値の型
bigint
BIT_COUNT は、ビット数をカウントする前にキャストされません。 これは、データ型によっては、同じ数でもバイナリ表現の場合に異なる数になることがあるからです。
たとえば、SELECT BIT_COUNT (CAST (-1 AS SMALLINT)) と SELECT BIT_COUNT (CAST (-1 AS INT)) は、それぞれ 16 と 32 を返します。 これは、-1 のバイナリ表現で、データ型に応じて異なるビット数を 1 に設定できるためです。
注釈
リンク サーバーまたはアドホック クエリ (OPENQUERY) 内のビット操作関数の分散クエリ機能はサポートされていません。
データベース エンジンのラージ オブジェクト (LOB) データ型は、8,000 バイトを超えるデータを格納できます。 これらのデータ型は、行オーバーフロー データ ページにデータを格納します。 LOB には、LOB データ ページへの行内参照のテキストまたはイメージ ポインターを使用する、専用の LOB ページ構造にデータを格納するデータ型も含まれます。 データ ストレージの詳細については、「ページとエクステントのアーキテクチャ ガイド」を参照してください。
ビット操作関数は、tinyint、smallint、int、bigint、binary(n)、および varbinary(n) データ型で動作します。 varchar(max)、nvarchar(max)、varbinary(max)、イメージ、ntext、テキスト、xml、共通言語ランタイム (CLR) BLOB 型などのラージ オブジェクト (LOB) データ型はサポートされていません。
例
A. バイナリ値の BIT_COUNT を計算する
次の例では、バイナリ値の 1 に設定されるビット数を計算します。
SELECT BIT_COUNT(0xabcdef) AS Count;
結果は 17です。 これは、バイナリの 0xabcdef が 1010 1011 1100 1101 1110 1111 であり、値が 1 に設定されているビットが 17 個あるためです。
B. 整数の BIT_COUNT を計算する
次の例では、整数の 1 に設定されているビット数を計算しています。
SELECT BIT_COUNT(17) AS Count;
結果は 2です。 これは、バイナリの 17 が 0001 0001 であり、値が 1 に設定されたビットは 2 つのみであるためです。