Implicit Type Conversion

Teradata Vantage™ Data Types and Literals

brand
Software
Teradata Vantage
prodname
Teradata Database
Teradata Vantage NewSQL Engine
vrm_release
16.20
category
Programming Reference
featnum
B035-1143-162K
Teradata Database performs implicit UDT-to-numeric conversions for the following operations:
  • UPDATE
  • INSERT
  • Passing arguments to stored procedures, external stored procedures, UDFs, and UDMs
  • Specific system operators and functions identified in other sections of this document, unless the DisableUDTImplCastForSysFuncOp field of the DBS Control Record is set to TRUE

Performing an implicit data type conversion requires that an appropriate cast definition (see Usage Notes) exists that specifies the AS ASSIGNMENT clause.

The target numeric type of the cast definition does not have to be an exact match to the target numeric type of the implicit conversion. Teradata Database can use an implicit cast definition that specifies a BYTEINT, SMALLINT, INTEGER, BIGINT, DECIMAL/NUMERIC, NUMBER, or REAL/FLOAT/DOUBLE target type.

If multiple implicit cast definitions exist for converting the UDT to different numeric types, Teradata Database uses the implicit cast definition for the numeric type with the highest precedence. The following list shows the precedence of numeric types in order from lowest to highest precedence:
  • BYTEINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • DECIMAL/NUMERIC
  • NUMBER
  • REAL/FLOAT/DOUBLE

If no UDT-to-numeric implicit cast definitions exist, Teradata Database looks for other cast definitions that can substitute for the UDT-to-numeric implicit cast definition:

IF the following combination of implicit cast definitions exists … THEN Teradata Database …
UDT-to-DATE UDT-to-Character  
X   uses the UDT-to-DATE implicit cast definition.
  X uses the UDT-to-character implicit cast definition.

The character type cannot be CLOB.

If multiple UDT-to-character implicit cast definitions exist, then Teradata Database returns an SQL error.

X X reports an error.

Substitutions are valid because Teradata Database can use the implicit cast definition to cast the UDT to the substitute data type, and then implicitly cast the substitute data type to a numeric type.