BIT_COUNT (Transact SQL)

适用于:SQL Server 2022 (16.x) Azure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 分析终结点Microsoft Fabric 中的仓库

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

Transact-SQL 语法约定

语法

BIT_COUNT ( expression_value )

参数

expression_value

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

返回类型

bigint

在计算位数之前,BIT_COUNT 不会执行强制转换。 这是因为同一个数字在其二进制表示形式中可以有不同数量的 1,具体取决于数据类型。

例如,SELECT BIT_COUNT (CAST (-1 as smallint))SELECT BIT_COUNT (CAST (-1 as int)) 将分别返回 16 和 32。 这是预期结果,因为在 -1 的二进制表示形式中,可以根据数据类型将不同的位数设置为 1。

备注

在初始实现中,链接服务器中的位操作函数的分布式查询功能或即席查询 (OPENQUERY) 不受支持。

示例

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,并且只有 2 位的值设置为 1

请参阅