Archives of the TeradataForum
Message Posted: Tue, 15 Sep 2009 @ 15:11:07 GMT
Subj: | | Re: INTEGER to VARCHAR data conversion strange |
|
From: | | Fred W Pluebell |
1) You didn't specify a FORMAT for the implicit conversion. The default INTEGER format is '-(10)9' (unless you change that via tdlocaledef).
Implicit CAST follows Teradata rules, so the result is 11 characters long to allow for the optional sign. The INSERT SELECT takes the first 10
characters from the converted string (truncating the low-order digit), trims any trailing spaces, and inserts the result.
2) The constant value 13333 is not INTEGER, it's SMALLINT. The default format is '-(5)9', again to allow for the optional sign, so after the
implicit CAST it's 6 characters long. The constant '13333' is VARCHAR(5) CHARACTER SET UNICODE.
3) The implicit CAST behavior is different because the underlying data types are different.
Also notice the difference if you use explicit ANSI-style CAST:
insert into my_tabch sel cast(cl1 as VARCHAR(10)) from my_tab;
In this case, leading AND trailing spaces are trimmed (so there is no truncation).
|