Dela via


BIT_COUNT (Transact SQL)

gäller för: SQL Server 2022 (16.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

BIT_COUNT tar en parameter och returnerar antalet bitar som anges till 1 i parametern som en bigint- typ.

Transact-SQL syntaxkonventioner

Syntax

BIT_COUNT ( expression_value )

Argument

expression_value

Alla heltal eller binära uttryck som inte är ett stort objekt (LOB).

Returtyper

bigint

BIT_COUNT kastas inte innan antalet bitar räknas. Det beror på att samma tal kan ha ett annat antal i sin binära representation beroende på datatypen.

Till exempel returnerar SELECT BIT_COUNT (CAST (-1 AS SMALLINT)) och SELECT BIT_COUNT (CAST (-1 AS INT))16 respektive 32. Detta är avsett eftersom den binära representationen av -1 kan ha ett annat antal bitar inställda på 1 beroende på datatyp.

Anmärkningar

Funktioner för distribuerad fråga för bitmanipuleringsfunktioner i länkad server eller ad hoc-frågor (OPENQUERY) stöds inte.

Stora objektdatatyper (LOB) i databasmotorn kan lagra data som överstiger 8 000 byte. Dessa datatyper lagrar data på en rad-overflow datasida. En LOB omfattar även datatyper som lagrar data på dedikerade LOB-sidstrukturer, som använder en text eller en bildpekare med referenser på rad till LOB-datasidor. Mer information om datalagring finns i arkitekturguiden Sidor och omfattningar.

Bitmanipuleringsfunktionerna fungerar på tinyint, smallint, int, bigint, binary(n), och varbinary(n) datatyper. Stora objektdatatyper (LOB), till exempel varchar(max), nvarchar(max), varbinary(max), image, ntext, text, xmloch CLR-blobtyper (Common Language Runtime) stöds inte.

Exempel

A. Beräkna BIT_COUNT i ett binärt värde

I följande exempel beräknas antalet bitar som anges till 1 i ett binärt värde.

SELECT BIT_COUNT(0xabcdef) AS Count;

Resultatet är 17. Det beror på att 0xabcdef i binärt värde är 1010 1011 1100 1101 1110 1111och det finns 17 bitar med ett värde inställt på 1.

B. Beräkna BIT_COUNT i ett heltal

I följande exempel beräknas antalet bitar som anges till 1 i ett heltal.

SELECT BIT_COUNT(17) AS Count;

Resultatet är 2. Det beror på att 17 i binärt värde är 0001 0001, och det finns bara 2 bitar med ett värde inställt på 1.