暗黙的な変換の結果として、エラーなしで値が切り捨てられることがあります。
推奨事項: ベスト プラクティスとして、暗黙的な変換に頼らず、可能なときには明示的なCASTを使用してください。
例: Teradata変換構文を使用した、CHARへの変換
次のテーブル定義を考えます。
CREATE TABLE Test1 (c1 INT, c2 VARCHAR(1));
以下の2つのINSERT文はエラーなしで完了します。
INSERT INTO Test1 VALUES (1, '1'); INSERT INTO Test1 VALUES (2, 2);
この問合わせは2行を返します。
SELECT * FROM Test1; c1 c2 ------------- 1 1 2 <<<< Note that the value inserted in c2 is a blank
2番目のINSERT文では、数値の2がTeradata変換構文を使用して(つまりCASTを使用しないで)、暗黙的にCHARに変換されています。処理は、以下のようになります。
- 数値のデフォルトまたは指定されたFORMATを使用して数値を文字列に変換します。前後の埋め込み文字は、切り捨てられません。
- 必要であれば、埋め込み文字で右側に拡張するか右側から切り捨てて、ターゲットの長さ指定に適合させます。
非埋め込み文字が切り捨てられた場合には、文字列切り捨てエラーは報告されません。
この変換では数字を右寄せにしますが、結果の先頭バイトに1つの空白文字が入ります。数値から文字への変換については、数値から文字への変換を参照してください。