共用方式為


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 設定。

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)。

Database Engine 中的大型物件 (LOB) 數據類型可以儲存超過 8,000 個字節的數據。 這些數據類型會將數據儲存在數據 數據列溢位 頁面上。 LOB 也包含將數據儲存在專用 LOB 頁面結構的數據類型,其使用 LOB 數據頁內參考的文字或影像指標。 如需資料記憶體的詳細資訊,請參閱 頁面和範圍架構指南

位作函式會在 tinyintsmallintintbigintbinary(n,以及 varbinary(n 數據類型。 不支援大型物件 (LOB) 數據類型,例如 varchar(max)nvarchar(max)varbinary(max)imagentexttextxml和 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;

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