BIT_COUNT (Transact SQL)
適用於:Microsoft Fabric Microsoft網
狀架構倉儲中的 SQL Server 2022 (16.x)
Azure SQL 資料庫
Azure SQL 受控執行個體SQL 分析端點
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
。