共用方式為


BIT_COUNT (Transact SQL)

適用於:Microsoft Fabric Microsoft網狀架構倉儲中的 SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體SQL 分析端點

BIT_COUNT 接受一個參數,並傳回該參數中設定為1的位數,做為 bigint 類型。

Transact-SQL 語法慣例

語法

BIT_COUNT ( expression_value )

引數

expression_value

任何不是大型物件的整數或二進位表達式(LOB)。

傳回型別

bigint

在計算位數之前,BIT_COUNT 不會轉換。 這是因為相同的數字會根據資料類型,而在二進位表示中有不同數量的一。

例如,SELECT BIT_COUNT (CAST (-1 AS SMALLINT))SELECT BIT_COUNT (CAST (-1 AS INT)) 分別傳回 1632。 這是為了 -1 的二進位表示法,根據數據類型,可以將不同的位數目設定為 1

備註

不支援連結伺服器或臨機作查詢中位作函式的分散式查詢功能(OPENQUERY)。

Database Engine 中的大型物件 (LOB) 數據類型可以儲存超過 8,000 個字節的數據。 這些數據類型會將數據儲存在數據 數據列溢位 頁面上。 LOB 也包含將數據儲存在專用 LOB 頁面結構的數據類型,其使用 LOB 數據頁內參考的文字或影像指標。 如需資料記憶體的詳細資訊,請參閱 頁面和範圍架構指南

位作函式會在 tinyintsmallintintbigintbinary(n,以及 varbinary(n 數據類型。 不支援大型物件 (LOB) 數據類型,例如 varchar(max)nvarchar(max)varbinary(max)imagentexttextxml和 Common Language Runtime (CLR) BLOB 類型。

範例

A. 計算二進位值中的 BIT_COUNT

在以下範例中,會計算二進位值中設定為 1 的位元數。

SELECT BIT_COUNT(0xabcdef) AS Count;

結果為 17。 這是因為二進位中的 0xabcdef1010 1011 1100 1101 1110 1111,而總共有 17 個位元的值設定為 1

B. 計算整數中的 BIT_COUNT

在以下範例中,會計算整數中設定為 1 的位元數。

SELECT BIT_COUNT(17) AS Count;

結果為 2。 這是因為二進位中的 170001 0001,而只有 2 個位元的值設定為 1