16.20 - 文字から数値への暗黙的な変換 - Teradata Vantage NewSQL Engine

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

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

文字から数値への暗黙の変換が有効な結果になるのは、文字列が数値を表わしている場合のみです。

数のオペランドが必要な式にCHARまたはVARCHAR文字列がある場合、その文字列は書式化された数として読み取られ、FLOATのデフォルトの書式でFLOAT値に変換されます。

暗黙の書式を上書きするには、FORMAT句を使用します。

または、FLOATのデフォルト形式を変更するには、REALエレメントの設定を、SDF(データ形式仕様)ファイルで変更することができます。デフォルトのデータ型の形式、SDFファイル、FORMAT句の詳細について、データ型の形式および形式句を参照してください。

数値オペランドが必要な式でCLOBタイプを使用する場合、まずCLOBをCHARまたはVARCHARに明示的に変換する必要があります。

空の文字列(長さがゼロ)または埋め込み文字だけで構成されている文字列は、数値がゼロであるとみなされます。

FLOATのデフォルトの書式が-9.99E-99の場合、以下のようになります。

変換後 結果
1.1*’$20.00’ 1.10E 00*2.00E1 2.20E 01
’2’+’2’ 2.00E 00+2.00E 00 4.00E 00
’A’ + 2 ---------- エラー

数値データ型の列またはパラメータが文字列値で指定されている場合、その文字列も、書式化された数値であるとみなされます。例えば、次のINSERT文は、Salaryを数値の文字列として指定しています。

INSERT INTO Employee (EmpNo, Name, Salary) 
VALUES (10022, 'Clements D', '$38,000.00'); 

数値型への変換は、編集用の記号を取り除きます。選択された時に、給与データは、CREATE TABLE文中でSalary用にFORMAT句で許可された特殊文字だけを含みます。FORMAT句が'G-(9)D9(2)'の場合、出力は以下のようになります。

   Salary
---------
38,000.00

FORMAT句が‘G-L(9)D9(2)’の場合、出力は以下のようになります。

    Salary
----------
$38,000.00