在 Transact-SQL 語句中,將兩個給定的整型值轉換為二進制表達式,對其執(zhí)行按位互斥 OR 運算。
expression ^ expression
expression
是任何有效的 Microsoft® SQL Server™ 表達式(表達式必須由整數數據類型分類中的任何數據類型組成,或者由 binary 或 varbinary 數據類型組成)。expression 是一個經過處理并轉換為二進制數字以便進行位運算的整數。
說明 在位運算中,只有一個 expression 可以是 binary 或 varbinary 數據類型。
如果輸入值為 int,則返回 int;如果輸入值為 smallint,則返回 smallint;或者如果輸入值為 tinyint,則返回 tinyint。
通過從兩個表達式取對應的位,位運算符 ^ 在兩個表達式之間執(zhí)行按位邏輯異或運算。如果在輸入表達式的當前正在被解析的位中,某個位(但不是兩個位)的值為 1,則結果中位的值被設置為 1;如果兩個位的值都為 0 或者都為1,那么結果中該位的值被清除為 0。
位運算符 ^ 只可以用在具有整型數據類型分類的列上。
如果左右表達式的整型數據類型不同(例如,左邊 expression 的數據類型是 smallint,右邊 expression 的數據類型是 int),那么較小的數據類型的參數將轉換為較大的數據類型。在該示例中,數據類型為 smallint 的 expression 被轉換為 int 數據類型。
下面的示例創(chuàng)建一個具有 int 數據類型的表以顯示原始的值,并將該表放入一行中。
USE master
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_value 列和 b_int_value 列上執(zhí)行按位互斥 OR 運算。
USE MASTER
GO
SELECT a_int_value ^ b_int_value
FROM bitwise
GO
下面是結果集:
-----------
225
(1 row(s) affected)
170(a_int_value 或 A,如下所示)的二進制表示為 0000 0000 1010 1010。75(b_int_value 或 B,如下所示)的二進制表示為 0000 0000 0100 1011。在這兩個值之間執(zhí)行按位互斥 OR 運算所產生的二進制結果是 0000 0000 1110 0001,即十進制數 225。
(A ^ B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 0001
相關文章