BIT_COUNT (Transact SQL)
适用于: sql Server 2022 (16.x)
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric
Warehouse 中的 Microsoft Fabric Warehouse 中的 SQL 分析终结点
BIT_COUNT
采用一个参数,并将该参数中的位数设置为 1 作为 bigint 类型返回。
语法
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
)中位作函数的分布式查询功能。
数据库引擎中的大型对象 (LOB) 数据类型可以存储超过 8,000 字节的数据。 这些数据类型将数据存储在 行溢出 数据页上。 LOB 还包含将数据存储在专用 LOB 页面结构上的数据类型,这些结构使用对 LOB 数据页的行内引用的文本或图像指针。 有关数据存储的详细信息,请参阅 页面和盘区体系结构指南。
位作函数对 tinyint、smallint、int、bigint、binary(n)和 varbinary(n) 数据类型进行作。 不支持大型对象(LOB)数据类型,如 varchar(max)、nvarchar(max)、varbinary(max)、图像、ntext、文本、xml和公共语言运行时 (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
,并且只有 2 位的值设置为 1
。