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