以下のルールは、すべてのTHEN/ELSE式のデータ型が文字の場合のCASE式に適用されます。
- CASE式の結果も文字データ型になり、その長さは、THEN/ELSE式のさまざまな文字データ型の最大長に等しくなります。
- すべてのTHEN/ELSE式のデータ型がCHARACTER (またはCHAR)の場合、結果のデータ型はCHARACTERになります。複数の式がVARCHAR (またはLONG VARCHAR)の場合、結果のデータ型はVARCHARになります。
- 結果のサーバー文字セットは、次のように決定されます。
- CASE式に1つの非リテラル文字式と1つ以上のリテラルが含まれている場合、Teradata Databaseはすべてのリテラルを非リテラルの文字セットにコード変換します。このコード変換が成功すると、非リテラルの文字セットが結果のデータ型に使用されます。変換に失敗した場合、結果のサーバー文字セットはUnicodeになります。
- CASE式に複数の非リテラル文字式と1つ以上のリテラルが含まれている場合は、次のようになります。
すべての非リテラル式に同一の文字セットが含まれている場合、Teradata Databaseは共通データ型としてこの文字セットを使用します。そうではなく、非リテラル式に異なる文字セットが含まれている場合、Teradata Databaseは共通データ型としてUnicode文字セットを使用します。
Teradata Databaseは、 すべてのリテラルを共通データ型の文字セットにコード変換できるかどうかを試します。この変換に成功すると、結果のデータ型は共通データ型の文字セットになります。変換に失敗した場合、結果のサーバー文字セットはUnicodeになります。