SET_BIT (Transact SQL)
適用於:Microsoft Fabric Microsoft網狀架構倉儲中的 SQL Server 2022 (16.x) Azure SQL 資料庫 Azure SQL 受控執行個體 SQL 分析端點
SET_BIT 會依據 bit_offset 所定義的位元傳回 expression_value 位移。 位元值預設為 1,或由 bit_value 設定。
語法
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;
結果為 0xABCDEE
。 expression_value 會轉換成二進位,也就是 1010 1011 1100 1101 1110 1111
。 SET_BIT 會將第一個位元變更為 0,並以十六進位格式傳回結果。