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や範囲の境界として、文字式(CHAR、VARCHAR、GRAPHICまたはVARGRAPHIC)を指定できます。適用される使用上のルールは、次のとおりです。
  • RANGE_Nパーティション式には、UPPERCASE修飾子と、次に示す関数を使用できます: LOWER、UPPER、TRANSLATE、TRIM、VARGRAPHIC、INDEX、MINDEX、POSITION、TRANSLATE_CHK、CHAR2HEXINT。
  • test_expressionが文字データ型の場合は、EACH句を指定できません。
  • RANGE_N式内で参照する文字列定数は、31,000バイト未満にする必要があります。
  • test_expressionが文字データ型であり、いずれかの範囲の境界の長さ(後続の埋め込み文字を除く)が、test_expressionの長さよりも長い場合、エラーが返されます。
  • 文字のRANGE_Nでパーティション化する場合は、範囲の昇順がセッションの照合と、test_expressionのケース指定によって異なります。例えば、test_expressionが、NOT CASESPECIFIC式と、ケース指定修飾子(CASESPECIFIC、NOT CASESPECIFIC)のないリテラルの組み合わせならば、ANSIモードのセッションではケース指定がCASESPECIFICになり、TeradataモードのセッションではNOT CASESPECIFICになります。
    グラフィック文字データが関与する文字列比較は、すべてケース指定になります。
  • 指定した範囲のいずれかが、NULL境界で定義されている場合や、昇順になっていない場合、または部分的に重なる場合には、エラーが返されます。文字のテスト値の昇順は、セッションの照合と、test_expressionのケース指定によって異なります。
    • 列の参照とリテラルの大文字/小文字の区別は、セッションのデフォルト、明示的なCAST、またはテーブルが作成されたときのCREATE TABLE文の指定内容によって決まります。列にはCASESPECIFICまたはNOT CASESPECIFICを明示的に指定できます。また、それらの修飾子で定数式をCASTできます。

      明示的な指定がないときに、Teradataセッションのトランザクション セマンティクスが有効な場合には、NOT CASESPECIFICが使用されます。ANSIセッションのトランザクション セマンティクスが有効な場合には、CASESPECIFICがデフォルトになります。

      例えば、条件式が、NOT CASESPECIFIC式と、大文字/小文字の区別修飾子(CASESPECIFIC、NOT CASESPECIFIC)のない定数の組み合わせならば、ANSIモードのセッションでは大文字/小文字の区別がCASESENSITIVEになり、TeradataモードのセッションではCASEBLINDになります。

      グラフィック データが関わる文字列比較では、すべて大文字と小文字が区別されます。

  • 文字比較演算子(=、<、>、<=、>=、<>、BETWEEN、LIKE)では、文字列定数が比較対象の列データよりも短い場合、その文字列定数は埋め込み文字が埋め込まれているものとして扱われます。埋め込み文字(例えば、<スペース>文字)は、文字セットに固有なものになります。そのため、文字のtest_expressionが、文字範囲の境界よりも長い長さで定義されていると、その範囲の境界とtest _expressionの比較は、範囲の境界が埋め込み文字で埋め込まれているものとして動作します。

    埋め込み文字は、照合内の最小コード ポイントとして照合されないことがあります。範囲の境界の長さがnの場合に、その範囲の境界とtest_expressionが最初のn文字まで完全に一致していても、n+1の位置に埋め込み文字よりも小さく照合される文字が含まれていると、そのtest_expressionは範囲の境界よりも小さいと照合されます。を参照してください。