共用方式為


^ (位元互斥 OR) (Transact-SQL)

在兩個整數值之間,執行位元互斥 OR 運算。

主題連結圖示Transact-SQL 語法慣例

語法

expression ^ expression

引數

expression

這是整數資料類型類別目錄之任何資料類型、bitbinaryvarbinary 資料類型的任何有效運算式expression 是當作位元運算的二進位數來處理的。

ms190277.note(zh-tw,SQL.90).gif附註:
在位元運算中,只有一個 expression 可以是 binaryvarbinary 資料類型。

結果類型

如果輸入值是 int,便是 int

如果輸入值是 smallint,便是 smallint

如果輸入值是 tinyint,便是 tinyint

備註

^ 位元運算子會在兩個運算式之間執行位元邏輯互斥 OR 運算,每個運算式各有一個對應的位元。如果輸入運算式的其中一個位元 (針對目前所解析的位元) 的值是 1 (兩個位元值不能同時是 1),結果中的兩個位元都會設為 1。如果兩個位元同時是 0 或同時是 1,便會清除結果中的位元而成為 0 值。

如果左右運算式的整數資料類型不同 (例如,左 expressionsmallint,右 expressionint),較小資料類型的引數會轉換成較大的資料類型。在這個情況下,smallintexpression 會轉換成 int

範例

下列範例會利用 int 資料類型建立資料表,來儲存原始值以及將兩個值插入單一資料列中。

USE tempdb;
GO
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES 
    WHERE TABLE_NAME = 'bitwise')
DROP TABLE bitwise;
GO
CREATE TABLE bitwise
( 
a_int_value int NOT NULL,
b_int_value int NOT NULL
);
GO
INSERT bitwise VALUES (170, 75);
GO

下列查詢在 a_int_valueb_int_value 資料行上執行位元互斥 OR 運算。

USE tempdb;
GO
SELECT a_int_value ^ b_int_value
FROM bitwise;
GO

結果集如下:

----------- 
225         

(1 row(s) affected)

170 (a_int_valueA) 的二進位表示法是 0000 0000 1010 1010。75 (b_int_valueB) 的二進位表示法是 0000 0000 0100 1011。對這兩個值執行位元互斥 OR 運算,會產生二進位結果 0000 0000 1110 0001,也就是十進位的 225。

(A ^ B)   
         0000 0000 1010 1010
         0000 0000 0100 1011
         -------------------
         0000 0000 1110 0001

請參閱

參考

運算式 (Transact-SQL)
運算子 (Transact-SQL)

其他資源

位元運算子 (Database Engine)

說明及資訊

取得 SQL Server 2005 協助