在 Transact-SQL 語(yǔ)句中,將兩個(gè)給定的整型值轉(zhuǎn)換為二進(jìn)制表達(dá)式,對(duì)其執(zhí)行按位邏輯或運(yùn)算。
expression | expression
expression
是任何有效的 Microsoft® SQL Server™ 表達(dá)式(表達(dá)式必須由整數(shù)數(shù)據(jù)類(lèi)型分類(lèi)中的任何數(shù)據(jù)類(lèi)型組成。expression 是一個(gè)經(jīng)過(guò)處理并轉(zhuǎn)換為二進(jìn)制數(shù)字以便進(jìn)行位運(yùn)算的整數(shù)。
如果輸入值為 int,則返回 int;如果輸入值為 smallint,則返回 smallint;或者如果輸入值為 tinyint,則返回 tinyint。
通過(guò)從兩個(gè)表達(dá)式取對(duì)應(yīng)的位,位運(yùn)算符 | 在兩個(gè)表達(dá)式之間執(zhí)行按位邏輯或運(yùn)算。如果在輸入表達(dá)式中有一個(gè)位為 1 或者兩個(gè)位均為 1(正在被解析的當(dāng)前位),那么結(jié)果中的位被設(shè)置為 1;如果輸入表達(dá)式中的兩個(gè)位都不為 1,則結(jié)果中該位的值被設(shè)置為 0。
位運(yùn)算符 | 要求有兩個(gè)表達(dá)式,并且只可以用在具有整型數(shù)據(jù)類(lèi)型分類(lèi)的表達(dá)式上。
如果左右表達(dá)式的整型數(shù)據(jù)類(lèi)型不同(例如,左邊 expression 的數(shù)據(jù)類(lèi)型是 smallint,右邊 expression 的數(shù)據(jù)類(lèi)型是 int),那么將較小的數(shù)據(jù)類(lèi)型的參數(shù)轉(zhuǎn)換為較大的數(shù)據(jù)類(lèi)型。在該示例中,數(shù)據(jù)類(lèi)型為 smallint 的 expression 被轉(zhuǎn)換為 int 數(shù)據(jù)類(lèi)型。
下面的示例創(chuàng)建一個(gè)具有 int 數(shù)據(jù)類(lèi)型的表以顯示原始的值,并將該表放入一行中。
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é)果集:
-----------
235
(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 1011,即十進(jìn)制數(shù) 235。
(A | B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 1011
相關(guān)文章