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
)。
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. 使用 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,並以十六進位格式傳回結果。