分享方式:


位元操作函數

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

移動、擷取 (取得)、設定或計算整數或二進位值內的單一位元之類的位元操作函數,可讓您比使用個別位元更有效率地處理和儲存資料。

一個「位元」有兩個值 (10,代表 onoff,或是 truefalse)。 一個「位元組」是由 8 個位元的序列所組成。 SQL Server 中的位元操作函數會將位元組中最左邊的位元視為最大 (最重要的)。 對於位元操作函數,位元是從右至左編號,位元 0 位於最右邊且最小,位元 7 則位於最左邊且最大。

例如,二進位序列 00000111 是數字 7 的十進位對等值。 您可以使用 2 的次方來計算此值,如下所示:

00000111 = (2^2 + 2^1 + 2^0 = 4 + 2 + 1 = 7)

這實際上表示,雖然 SQL Server 將此值儲存為 11100000 (位元組反轉),但位元操作函數會將其視為 00000111

查看多個位元組時,第一個位元組 (從左至右讀取) 是最大的位元組。

您可以使用下列圖片,將 SQL Server 位元操作函數如何解譯位元和位元組運算式值以及位元位移視覺化。

int

圖表:顯示 int 值,其中 4 個位元組代表每個位元組從左至右的反轉二進位值。

smallint

圖表:顯示 small int 值,其中第一個位元組代表位元 15 到 8,而第二個位元組代表位元 7 到 0。

函式

SQL Server 中有五個可用來操作位元的函數:

這五個函數都旨在對 tinyintsmallintintbigintbinary(n)varbinary(n) 資料類型進行操作。

不支援下列類型:varcharnvarcharimagentexttextxmltable

備註

在初始實作中,連結的伺服器或特定查詢 (OPENQUERY) 中不支援位元操作函數的分散式查詢功能。