17.10 - 文字タイプの引数のルール - 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
日本語 (日本)

引数が文字タイプの場合、照合は論理文字に対して行なわれます。1バイト文字は1バイト文字と照合され、マルチバイト文字はマルチバイト文字と照合されます。照合を実行するには、両方の式の論理文字表現が同じでなければなりません。

引数のサーバー文字セットが同じものでない場合、INDEXは暗黙文字変換を行ないます。

CASESPECIFIC属性は、文字が一致するものとしてみなせるかどうかを左右します。

セッション モード 文字列およびリテラルの大文字小文字の区別のデフォルト
ANSI CASESPECIFIC。
Teradata NOT CASESPECIFIC。

例外はGRAPHIC型の文字データで、この場合は必ずCASESPECIFICになります。

大文字小文字の区別のデフォルトを上書きするには、CREATE TABLEまたはALTER TABLEの中で文字の列に対してCASESPECIFICまたはNOT CASESPECIFIC句を適用することができます。

あるいは、CASESPECIFICまたはNOT CASESPECIFIC句をINDEX文字列引数に適用することができます。

条件 結果
どちらかの引数の属性がCASESPECIFICの場合(デフォルトまたは明示指定によって) シンプルなLatin文字は、文字が同じで、大文字小文字の区別も同じ場合にのみ、一致しているとみなされます。
両方の引数の属性がNOT CASESPECIFICの場合(デフォルトまたは明示指定によって) 操作を開始する前に、一部の文字が大文字に変換されます。

文字が小文字のシンプルなLatin文字である場合は、操作が始まる前に、大文字に変換されます。

文字がLatin以外の1バイト文字、マルチバイト文字、または1バイト文字データとマルチバイト文字データとの間の移行を示すバイトである場合は、大文字に変換されません。

文字タイプ引数を使用している場合、INDEXによる文字の照合を大文字小文字を区別して行なうには、最低1つの引数にCASESPECIFIC句を指定します。 例えば、

   SELECT Name 
   FROM Employee 
   WHERE INDEX(Name, 'X' (CASESPECIFIC)) = 1;

INDEXによる文字の照合を大文字小文字の区別を無視して行なうには、両方の引数にNOT CASESPECIFIC句を指定します。