SET_BIT (Transact SQL)

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

SET_BIT 會依據 bit_offset 所定義的位元傳回 expression_value 位移。 位元值預設為 1,或由 bit_value 設定。

Transact-SQL 語法慣例

語法

SET_BIT ( expression_value, bit_offset ) 
SET_BIT ( expression_value, bit_offset, bit_value )

引數

expression_value

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

bit_offset

任何整數。

傳回類型

expression_value 相同的類型。

bit_offset 參數可用來識別要設定之資料的第 n 位元。 在整數類型中,第 0 個位元是最低有效位元。 在二進位類型中,第 0 個位元是最右側位元組中的最低有效位元。

bit_value 可以是整數或位元。 不過,無論資料類型為何,bit_value 的有效值都只有 1 和 0。 如果 bit_value 不是 1 或 0 或 null,SET_BIT 將會擲回錯誤。

如果 bit_offset 為負數或大於資料類型中的最後一個位元,SET_BIT 將會擲回錯誤。

備註

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

範例

A. 使用 SET_BIT 修改值

在此範例中,第三個位元 (在位移 2 上,索引從零開始) 設定為 1

SELECT SET_BIT ( 0x00, 2 ) as VARBIN1;

結果為 0x04。 這是因為 expression_value0x00 會轉換成 0000。 SET_BIT 會將其第三個位元 (位移 2) 變更為 1,使其變成 0100。 然後,這個二進位值會以十六進位表示法 4 傳回。

B. 使用 SET_BIT 修改具有自訂 bit_value 的值

在此範例中,bit_value 設定為 0,而不是預設值 1。

SELECT SET_BIT ( 0xabcdef, 0, 0 ) as VARBIN2;

結果為 0xABCDEEexpression_value 會轉換成二進位,也就是 1010 1011 1100 1101 1110 1111。 SET_BIT 會將第一個位元變更為 0,並以十六進位格式傳回結果。

另請參閱