適用於:SQL Server 2022 (16.x)
Azure SQL Database
AzureSQL Managed Instance
SQL Analytics endpoint in Microsoft Fabric Warehouse
in Microsoft Fabric
SQL database in Microsoft Fabric
BIT_COUNT 接受一個參數,並傳回該參數中設定為1的位數,做為 bigint 類型。
語法
BIT_COUNT ( expression_value )
引數
expression_value
任何不是大型物件的整數或二進位表達式(LOB)。
傳回型別
bigint
在計算位數之前,BIT_COUNT 不會轉換。 這是因為相同的數字會根據資料類型,而在二進位表示中有不同數量的一。
例如,SELECT BIT_COUNT (CAST (-1 AS SMALLINT)) 和 SELECT BIT_COUNT (CAST (-1 AS INT)) 分別傳回 16 和 32。 這是為了 -1 的二進位表示法,根據數據類型,可以將不同的位數目設定為 1。
備註
不支援連結伺服器或臨機作查詢中位作函式的分散式查詢功能(OPENQUERY)。
Database Engine 中的大型物件 (LOB) 數據類型可以儲存超過 8,000 個字節的數據。 這些數據類型會將數據儲存在數據 數據列溢位 頁面上。 LOB 也包含將數據儲存在專用 LOB 頁面結構的數據類型,其使用 LOB 數據頁內參考的文字或影像指標。 如需資料記憶體的詳細資訊,請參閱 頁面和範圍架構指南。
位作函式會在 tinyint、smallint、int、bigint、binary(n),以及 varbinary(n) 數據類型。 不支援大型物件 (LOB) 數據類型,例如 varchar(max)、nvarchar(max)、varbinary(max)、image、ntext、text、xml和 Common Language Runtime (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。