混合データについてのルールを次のテーブルに定義します。
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句の式の最大タイプです。次のリストはタイプを最大から最小へと順序付けています。
|
NUMERICおよびCHARACTERデータだけで構成されている場合 | 数値データは、CHARACTER型に変換されます。この型の長さは、この数値式に関連付けられた形式によって決まります。その後、結果のデータ型には文字、長さおよび文字セットについてのルールが適用されます。詳細は、THEN/ELSE文字タイプの式を参照してください。 サーバー文字セットがGRAPHICである場合はエラーが生成されます。
|