| (位元 OR) (Transact-SQL)

當在 Transact-SQL 陳述式內轉換成二進位運算式時,執行兩個指定整數值之間的位元邏輯 OR 運算。

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

語法

expression | expression

引數

  • expression
    這是整數資料類型類別目錄,或 bit、binary 或 varbinary 資料類型的任何有效運算式。expression 是當做位元運算的二進位數來處理的。

    [!附註]

    在位元運算中,只有一個 expression 可以是 binary 或 varbinary 資料類型。

結果類型

如果輸入值是 int,便傳回 int,如果輸入值是 smallint,便傳回 smallint,或者如果輸入值是 tinyint,便傳回 tinyint。

備註

位元 | 運算子會在兩個運算式之間執行位元邏輯 OR 運算,兩個運算式各有一個對應的位元。如果輸入運算式的兩個位元或其中一個位元 (針對目前所解析的位元) 的值是 1,結果中的位元都會設為 1;如果輸入運算式中的兩個位元都不是 1,結果中的位元便設為 0。

如果左右運算式的整數資料類型不同 (例如,左 expression 是 smallint,右 expression 是 int),較小資料類型的引數會轉換成較大的資料類型。在這個範例中,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

以下為結果集:

----------- 
235         

(1 row(s) affected)

170 (a_int_value 或下面的 A) 的二進位表示法是 0000 0000 1010 1010。75 (b_int_value 或下面的 B) 的二進位表示法是 0000 0000 0100 1011。對這兩個值執行位元 OR 運算,會產生二進位結果 0000 0000 1110 1011,也就是十進位的 235。

(A | B)
0000 0000 1010 1010
0000 0000 0100 1011
-------------------
0000 0000 1110 1011