BIT_COUNT (Transact-SQL)

Gilt für: SQL Server 2022 (16.x) Azure SQL-DatenbankAzure SQL Managed InstanceSQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric SQL databasein Microsoft Fabric

BIT_COUNT verwendet einen Parameter und gibt die Anzahl der Bits zurück, die in diesem Parameter als bigint Typ auf 1 festgelegt sind.

Transact-SQL-Syntaxkonventionen

Syntax

BIT_COUNT ( expression_value )

Argumente

expression_value

Ein ganzzahliger oder binärer Ausdruck, der kein großes Objekt ist (LOB-).

Rückgabetypen

bigint

BIT_COUNT wirft seine Eingabe nicht, bevor die Bits gezählt werden. Da die binäre Darstellung derselben Zahl vom Datentyp abhängt, hängt das Ergebnis vom Eingabetyp ab.

Zum Beispiel geben die folgenden Abfragen jeweils und 32, zurück:16

SELECT BIT_COUNT(CAST (-1 AS SMALLINT)); -- Returns 16
SELECT BIT_COUNT(CAST (-1 AS INT)); -- Returns 32

BIT_COUNT gibt zurück, NULL wenn expression_value ein Typ NULL eines unterstützten Datentyps ist. Du musst ein untypisiertes NULL Literal auf einen unterstützten Typ wirken, bevor du es weitergibst:

SELECT BIT_COUNT(CAST (NULL AS INT)); -- Returns NULL

Hinweise

Verteilte Abfragefunktionen für Bitmanipulationsfunktionen innerhalb von verlinkten Servern oder Ad-hoc-Abfragen (OPENQUERY) werden nicht unterstützt.

Datentypen für große Objekte (LOB) im Datenbankmodul können Daten speichern, die 8.000 Bytes überschreiten. Diese Datentypen speichern Daten auf einer Zeilenüberlauf Datenseite. Ein LOB umfasst auch Datentypen, die Daten in dedizierten BRANCHENseitenstrukturen speichern, die einen Text oder einen Bildzeiger von In-Zeilen-Verweisen auf LOB-Datenseiten verwenden. Weitere Informationen zur Datenspeicherung finden Sie im Handbuch zur Seiten- und Erweiterungsarchitektur.

Die Bitmanipulationsfunktionen arbeiten mit tinyint, smallint, int, bigint, binary(n)und varbinary(n) Datentypen. Diese Funktionen unterstützen keine großen Objekt-(LOB)-Datentypen wie varchar(max),nvarchar(max),varbinary(max), image, ntext, text, xml und common language (CLR) BLOB-Typen.

Beispiele

A. Berechnen von BIT_COUNT in einem Binärwert

Das folgende Beispiel berechnet die Anzahl der Bits, die in einem Binärwert gesetzt werden 1 .

SELECT BIT_COUNT(0xABCDEF) AS Count;

Das Ergebnis ist 17. Dieses Ergebnis tritt auf, weil 0xABCDEF im Binärbereich gilt 1010 1011 1100 1101 1110 1111, wobei 17 Bits auf 1gesetzt sind.

B. Berechnen von BIT_COUNT in einer ganzen Zahl

Das folgende Beispiel berechnet die Anzahl der Bits, die in einer ganzen Zahl gesetzt werden 1 .

SELECT BIT_COUNT(17) AS Count;

Das Ergebnis ist 2. Dieses Ergebnis tritt auf, weil 17 in Binären , 0001 0001, das nur zwei Bits hat, die auf 1gesetzt sind.