BIT_COUNT(Transact-SQL)

适用于: SQL Server 2022 (16.x) Azure SQL 数据库Azure SQL 托管实例SQL Analytics endpoint in Microsoft FabricWarehouse in Microsoft FabricSQL database in Microsoft Fabric

BIT_COUNT 采用一个参数,并将该参数中的位数设置为 1 作为 bigint 类型返回。

Transact-SQL 语法约定

语法

BIT_COUNT ( expression_value )

参数

expression_value

任何不是大型对象的整数或二进制表达式(LOB)。

返回类型

bigint

BIT_COUNT 在计数比特之前,它不会投射输入。 由于同一数字的二进制表示依赖于其数据类型,结果也依赖于输入类型。

例如,以下查询分别返回 1632返回:

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

BIT_COUNTexpression_value是支持数据类型的类型时NULL返回NULL。 您必须先将未类型 NULL 字面值转换为支持类型,然后再传递:

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

备注

不支持链接服务器或临时查询OPENQUERY()中位操作功能的分布式查询功能。

数据库引擎中的大型对象 (LOB) 数据类型可以存储超过 8,000 字节的数据。 这些数据类型将数据存储在 行溢出 数据页上。 LOB 还包含将数据存储在专用 LOB 页面结构上的数据类型,这些结构使用对 LOB 数据页的行内引用的文本或图像指针。 有关数据存储的详细信息,请参阅 Page 和 extent 体系结构指南

位作函数对 tinyintsmallintintbigintbinary(nvarbinary(n 数据类型进行作。 这些函数不支持大型对象(LOB)数据类型,如varchar(max)、nvarchar(max)、varbinary(max)、imagentexttextxml以及通用语言运行时(CLR)BLOB类型。

示例

A. 以二进制值计算 BIT_COUNT

以下示例计算二进制值中 的 1 位数。

SELECT BIT_COUNT(0xABCDEF) AS Count;

结果为 17。 此结果是因为 0xABCDEF 二进制中为 , 1010 1011 1100 1101 1110 1111其中 17 位设为 1

B. 以整数计算 BIT_COUNT

以下示例计算了设置为整 1 数的位数。

SELECT BIT_COUNT(17) AS Count;

结果为 2。 此结果是因为 17 二进制中 是 0001 0001,只有两个位设为 1