結果 - Teradata Database - Teradata Vantage NewSQL Engine - IN/NOT IN数量詞、結果。

Teradata Vantage™ SQL関数、演算子、式および述部

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/xzf1512079057909.ditamap
dita:ditavalPath
ja-JP/xzf1512079057909.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage
INがリテラルのリストともに使用された場合、expression_1の値が次のときに結果が真になります。
  • リスト内のいずれかのliteralに等しい。
  • signed_literal_1signed_literal_2の間(これらの値を含む)にある(signed_literal_1signed_literal_2より小さいか等しい場合)。
  • signed_literal_2signed_literal_1の間(これらの値を含む)にある(signed_literal_2signed_literal_1より小さい場合)

expression_1の値がNULLの場合、結果は不明となります。

expression_1の値が非NULLの場合は、結果が真意なるためのいずれの条件も満たされないので、結果は偽になります。

この形式を使用すると、式がリテラル リスト内のいずれかと等しい場合、IN検索条件が満たされます。式がリテラルのリスト内のどの値とも等しくない場合は、NOT IN条件が満たされます。

条件が真になる形式 条件
expression_1 IN expression_2 expression_1 = expression_2
expression_1 NOT IN expression_2 expression_1 <> expression_2
expression_1 IN (const_1, const_2) (expression_1 = const_1) OR (expression_1 = const_2)
expression_1 NOT IN (const_1, const_2) (expression_1 <> const_1) AND (expression_1 <> const_2)
expression_1 IN (signed_const_1 TO signed_const_2)

signed_const_1 <= signed_const_2

(signed_const_1 <= expression_1) AND (expression_1 <= signed_const_2)
expression_1 IN (signed_const_1 TO signed_const_2)

signed_const_2 < signed_const_1

(signed_const_2 <= expression_1) AND (expression_1 <= signed_const_1)
expression_1 NOT IN (signed_const_1 TO signed_const_2)

signed_const_1 <= signed_const_2

(expression_1 < signed_const_1) OR (expression_1 > signed_const_2)
expression_1 NOT IN (signed_const_1 TO signed_const_2)

signed_const_2 < signed_const_1

(expression_1 < signed_const_2) OR (expression_1 > signed_const_1)

以下に例を示します。

等価である文
SELECT DeptNo 
FROM Department
WHERE DeptNo IN (500, 600);
SELECT DeptNo 
FROM Department
WHERE DeptNo IN (500)
OR (DeptNo = 600);
UPDATE Employee 
SET Salary=Salary + 200 
WHERE DeptNo NOT IN (100, 700);
UPDATE Employee 
SET Salary=Salary + 200 
WHERE (DeptNo ^= 100) 
AND (DeptNo ^= 700);