次の方法で共有


BIT_COUNT (Transact SQL)

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

BIT_COUNT は 1 つのパラメーターを受け取り、そのパラメーターで 1 に設定されたビット数を、bigint 型として返します。

Transact-SQL 構文表記規則

構文

BIT_COUNT ( expression_value )

引数

expression_value

ラージ オブジェクトではない任意の整数式またはバイナリ式 (LOB)。

戻り値の型

bigint

BIT_COUNT は、ビット数をカウントする前にキャストされません。 これは、データ型によっては、同じ数でもバイナリ表現の場合に異なる数になることがあるからです。

たとえば、SELECT BIT_COUNT (CAST (-1 AS SMALLINT))SELECT BIT_COUNT (CAST (-1 AS INT)) は、それぞれ 1632 を返します。 これは、-1 のバイナリ表現で、データ型に応じて異なるビット数を 1 に設定できるためです。

注釈

リンク サーバーまたはアドホック クエリ (OPENQUERY) 内のビット操作関数の分散クエリ機能はサポートされていません。

データベース エンジンのラージ オブジェクト (LOB) データ型は、8,000 バイトを超えるデータを格納できます。 これらのデータ型は、行オーバーフロー データ ページにデータを格納します。 LOB には、LOB データ ページへの行内参照のテキストまたはイメージ ポインターを使用する、専用の LOB ページ構造にデータを格納するデータ型も含まれます。 データ ストレージの詳細については、「ページとエクステントのアーキテクチャ ガイド」を参照してください。

ビット操作関数は、tinyintsmallintintbigintbinary(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です。 これは、バイナリの 0xabcdef1010 1011 1100 1101 1110 1111 であり、値が 1 に設定されているビットが 17 個あるためです。

B. 整数の BIT_COUNT を計算する

次の例では、整数の 1 に設定されているビット数を計算しています。

SELECT BIT_COUNT(17) AS Count;

結果は 2です。 これは、バイナリの 170001 0001 であり、値が 1 に設定されたビットは 2 つのみであるためです。