17.10 - RANGE_N関数の構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQL関数、式、および述部

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1145-171K-JPN
Language
日本語 (日本)
RANGE_N (test_expression BETWEEN range_expression [, range_spec ])

構文要素

test_expression
BYTEINT、SMALLINT、INTEGER、DATE、CHAR、VARCHAR、GRAPHIC、またはVARGRAPHICデータ型となる式。
RANGE_Nはtest_expressionを評価して、結果が範囲リスト中の範囲内に収まるかどうかを判断します。最初の範囲の位置は1になり、それに続く範囲の位置はnを上限として1ずつ増加します。nは範囲の合計数です。
条件 结果
test_expressionの結果が範囲内に収まる RANGE_Nから範囲の位置が戻されます。
test_expressionの結果がNULLである RANGE_Nに以下のうちの1つを指定しない場合。
  • BETWEEN * AND *
  • UNKNOWN
  • NO RANGE OR UNKNOWN

RANGE_NはNULLを戻します。

RANGE_Nに範囲BETWEEN * AND *を指定した場合、NO RANGE、NO RANGE OR UNKNOWN、UNKNOWNのどれを指定しても、RANGE_Nは1を返します。

RANGE_Nに範囲BETWEEN * AND *を指定しない場合。
  • NO RANGE OR UNKNOWNを指定した場合、RANGE_Nはn + 1を返します。
  • UNKNOWNを指定し、NO RANGEを指定しない場合、RANGE_Nは n + 1を返します。
  • NO RANGEとUNKNOWNを指定した場合、RANGE_Nはn + 2を返します。
test_expressionが、リスト内のどの範囲からも外れている NO RANGEまたはNO RANGE OR UNKNOWNを指定した場合、RANGE_Nはn + 1を返します。

NO RANGEもNO RANGE OR UNKNOWNも指定しない場合、RANGE_NはNULLを返します。

range_expression
{ range_expr_1 | range_expr_2 | range_list }
range_spec
{ NO RANGE [ { OR | , } UNKNOWN ] | UNKNOWN }
range_expr_1
start_expression AND { end_expression | * } [ EACH range_size ]
range_expr_2
* AND { end_expression | * }
range_list
{ range_expr_3 | * [ AND end_expression ] }
    [, range_expr_3 [,...] ] , range_expr_1
NO RANGE
どの指定範囲にもマップされないtest_expressionを処理する範囲。
OR UNKNOWN
どの指定範囲にもマップされないtest_expressionや、RANGE_Nが範囲BETWEEN * AND *を指定しない場合にNULLと評価されるtest_expressionは、NO RANGE OR UNKNOWNが処理します。
UNKNOWN
RANGE_Nが範囲BETWEEN * AND *を指定しない場合にNULLと評価されるtest_expressionを処理します。
start_expression
範囲の開始境界を定義するリテラルまたはリテラル式。
start_expressionのデータ型はtest_expressionのデータ型と同じにする必要があります。または、test_expressionと同じデータ型に暗黙的にキャストする必要があります。
終了境界を指定しない場合、範囲はその開始境界(この境界は範囲に含まれます)から次の範囲の開始境界(この境界は範囲に含まれません)までと定義されます。
リスト内の最初の範囲の開始境界にアスタリスク( * )を使用して、使用可能な最小値(すべての値とNULLは、アスタリスクで指定された開始境界より大きくなります)を示します。アスタリスクは、どのデータ型とも互換性があります。
end_expression
範囲の終了境界を定義するリテラルまたはリテラル式。
end_expressionのデータ型はtest_expressionのデータ型と同じにする必要があります。または、test_expressionと同じデータ型に暗黙的にキャストする必要があります。
リスト内の最後の範囲では、終了境界を指定しなければなりません。それ以外の範囲については、終了境界値を指定しない場合、範囲はその開始境界値から(この開始境界値は範囲に含まれます)次の範囲の開始境界値まで(この開始境界値は範囲に含まれません)と定義されます。
リスト内の最後の範囲の終了境界にはアスタリスク( * )を使用して、使用可能な最大値(すべての値とNULLは、アスタリスクで指定された終了境界より小さくなります)を示します。
range_size
値が0より大きいリテラルまたはリテラル式。
EACH句を指定する範囲は一連の範囲に等しくなります。ここで、その一連の中の最初の範囲はstart_expressionから始まり、それに続く範囲はstart_expression + (range_size * n)から始まります。ここで、nは1から始まり、start_expression + (range_size * n)がend_expression以下であるか、または範囲リスト内の次のstart_expressionより小さい間は1つずつ増えます。
DATEタイプの場合、後続範囲内の有効な日付を計算する際には、+算術演算子ではなくADD_MONTHSを使用します。
range_sizeのデータ型は、test_expressionへの追加のために互換性がなければなりません。
test_expressionのデータ型が文字データ型(CHAR、VARCHAR、GRAPHIC、またはVARGRAPHIC)の場合は、EACH句を指定できません。
range_expr_3
start_expression [ AND end_expression ] [ EACH range_size ]