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 1111
och 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
.