17.10 - 混合データ型を含むTHEN/ELSE式 - 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
日本語 (日本)

混合データについてのルールを次のテーブルに定義します。

THEN/ELSE句の式 結果
BYTEおよび/またはVARBYTEデータ型で構成される場合 すべてのTHEN/ELSE式のデータ型がBYTEの場合、結果のデータ型はBYTEになります。複数の式がVARBYTEの場合、結果のデータ型はVARBYTEになります。

結果の長さは異なるバイト数のデータ型の最大長と等しくなります。

DateTime、またはIntervalデータ型を含んでいる場合 すべてのTHEN/ELSE句の式は同じデータ型を含まなければなりません。
FLOAT (近似値)を含んでいて、文字列を含んでいない場合 CASE式からFLOATの結果が戻されます。
FLOATデータ型が関係する場合は、不正確さを継承することはある程度避けられません。
DECIMALデータだけで構成されている場合 CASE式からDECIMALの結果が戻されます。
DECIMALの計算結果は、38桁以下に限定されます。38桁を超える場合は、数値オーバーフロー エラーになります。

DECIMAL結果の精度と小数部桁数がどのように計算されるかについては、2項算術演算子の結果のデータ型を参照してください。

すべて暗黙的にFLOATに変換され、CASE式によりFLOATの結果が返されます。

FLOATデータ型が関係する場合は、不正確さを継承することはある程度避けられません。10進値および整数値を浮動小数点数値に暗黙的に変換すると、精度が喪失するか、または正確に表現できない数字を生成することになります。
混合DECIMAL、BYTEINT、SMALLINT、INTEGER、およびBIGINTデータだけで構成されている場合
BYTEINT、SMALLINT、INTEGER、およびBIGINTデータが混在している場合 結果タイプはTHEN/ELSE句の式の最大タイプです。次のリストはタイプを最大から最小へと順序付けています。
  • BIGINT
  • INTEGER
  • SMALLINT
  • BYTEINT
NUMERICおよびCHARACTERデータだけで構成されている場合 数値データは、CHARACTER型に変換されます。この型の長さは、この数値式に関連付けられた形式によって決まります。その後、結果のデータ型には文字、長さおよび文字セットについてのルールが適用されます。詳細は、THEN/ELSE文字タイプの式を参照してください。
サーバー文字セットがGRAPHICである場合はエラーが生成されます。