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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/zsn1556242031050.ditamap
dita:ditavalPath
ja-JP/zsn1556242031050.ditaval
dita:id
B035-1143
Product Category
Software
Teradata Vantage

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