16.20 - 数値の桁あふれを防ぐためのCASTの使用 - Teradata Vantage NewSQL Engine

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

prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
プログラミング リファレンス
featnum
B035-1143-162K-JPN

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が作成される前)に、望むような結果ではない、オーバーフローが発生することがあります。