17.10 - 数値の桁あふれを防ぐためのCASTの使用 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ タイプおよびリテラル

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1143-171K-JPN
Language
日本語 (日本)

Teradata SQLのコンパイラの動作の性質上、大きな値が予期される場合は必ず式の引数にCASTを使用するのは重要なことです。

例えば、f1がDECIMAL(14,2)と定義されており、これを整数倍する、あるいはSUM(f1)を計算するとします。

この場合に、以下の演算について考慮してみます。

CAST(f1 AS DECIMAL(18,2))*100

または

SUM(CAST(f1 AS DECIMAL(18,2)))

上記の方法は、正しい結果集合を得るための適切な方法です。

一方、次のように式の結果をキャストするとします。

CAST(f1*100 AS DECIMAL(18,2))

または

CAST(SUM(f1) AS DECIMAL(18,2)

このとき、計算時(およびCASTが作成される前)に、望むような結果ではない、オーバーフローが発生することがあります。