文字比較を指定したCASE_Nの使用 - Advanced SQL Engine - Teradata Database

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/djk1612415574830.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1145
Product Category
Software
Teradata Vantage

CHAR、VARCHAR、GRAPHIC、VARGRAPHICデータ型を比較する条件式を、CASE_N関数内で指定できます。適用される使用上のルールは、次のとおりです。

  • CASE_Nパーティション式には、文字またはグラフィック文字の比較を使用できます。ただし、KANJI1またはKANJISJISの列やリテラル式が関与している比較は使用できません。
  • CASE_Nパーティション式には、UPPERCASE修飾子と、次に示す関数を使用できます。LOWER、UPPER、TRANSLATE、TRIM、VARGRAPHIC、INDEX、MINDEX、POSITION、TRANSLATE_CHK、CHAR2HEXINT。
  • CASE_N式内で参照する文字列定数は、31,000バイト未満にする必要があります。
  • CASE_N関数内の条件式を評価する際に使用される文字データの順序は、セッションの照合と、その条件式に対するケース指定によって決定されます。
    • その条件式がPPIの一部ではない場合には、現在のセッションの照合が使用されます。
    • その条件式がPPIの一部である場合には、テーブルまたは結合インデックスが作成されたときに有効であったセッションの照合が評価に使用されます。または、パーティションがALTER TABLE文で変更されたときに有効であったセッションの照合が評価に使用されます。
    • 列参照と文字列定数のケース指定は、セッションのデフォルト、明示的なCAST、またはテーブルが作成されたときのCREATE TABLE文の指定内容によって決まります。列にはCASESPECIFICまたはNOT CASESPECIFICを明示的に指定できます。また、それらの修飾子でリテラル式をCASTできます。

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

      例えば、条件式が、NOT CASESPECIFIC式と、ケース指定修飾子(CASESPECIFIC、NOT CASESPECIFIC)のないリテラルの組み合わせならば、ANSIモードのセッションではケース指定がCASESPECIFICになり、TeradataモードのセッションではNOT CASESPECIFICになります。

      グラフィック文字データが関与する文字列比較は、すべてケース指定になります。

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

    埋め込み文字は、照合内の最小コード ポイントとして照合されないことがあります。長さnのリテラルの場合、比較対象の列値がリテラルの最初のn文字まで完全に一致していても、列値のn+1の位置に埋め込み文字よりも小さく照合される文字が含まれていると、その列値は文字列リテラルよりも小さいと照合されます。