| (ビット演算子 OR) (Transact-SQL)

Transact-SQL ステートメントの中で、バイナリ式に変換された 2 つの指定される整数値に対して、ビットごとの論理和演算を実行します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

expression | expression

引数

  • expression
    整数型に分類されるデータ型、bit データ型、binary データ型、または varbinary データ型の有効な expression です。expression は、ビットごとの演算に対して 2 進数として扱われます。

    ms186714.note(ja-jp,SQL.90).gifメモ :
    ビットごとの演算で binary データ型または varbinary データ型として指定できる expression は、1 つだけです。

戻り値の型

入力値が int 型の場合は、int 型、smallint 型の場合は、smallint 型、tinyint 型の場合は、tinyint 型を返します。

解説

ビットごとの | 演算子は、2 つの式の対応するビットを対象にビットごとの論理和演算を実行します。入力式の中で現在処理の対象にあるビットについて、いずれかのビットまたは両方のビットが 1 の値を持つ場合、結果セットのビットは 1 に設定されます。入力式のビットが両方とも 1 の値を持たない場合、結果セットのビットは 0 に設定されます。

左側の式と右側の式が異なる整数型の場合 (たとえば、左側の expressionsmallint 型で、右側の expressionint 型の場合)、小さいデータ型の引数が大きいデータ型の引数に変換されます。この例の場合、smallint 型の expressionint 型に変換されます。

この例では、元の値を示すために int 値を持つテーブルを作成し、このテーブルに 1 行挿入します。

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_value 列と b_int_value 列との間でビットごとの論理和演算を実行します。

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 です。この 2 つの値に対してビットごとの論理和演算を実行すると、結果はバイナリで 0000 0000 1110 1011、10 進数では 235 になります。

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

参照

関連項目

演算子 (Transact-SQL)

その他の技術情報

ビット演算子 (データベース エンジン)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手