15.00 - UDT-to-Character Conversion - Teradata Database

Teradata Database SQL Functions, Operators, Expressions, and Predicates

Product
Teradata Database
Release Number
15.00
Content Type
Programming Reference
Publication ID
B035-1145-015K
Language
English (United States)

UDT-to-Character Conversion

Purpose

Converts a UDT expression to a character data type.

CAST Syntax

where:

 

Syntax element …

Specifies …

UDT_expression

an expression that results in a UDT data type.

For details on expressions that can result in UDT data types, see “SQL UDF” on page 1318.

character_data_definition

the target character type, for example CHAR or VARCHAR, followed by optional FORMAT, NAMED, or TITLE attribute phrases.

ANSI Compliance

This is ANSI SQL:2011 compliant.

As an extension to ANSI, CAST permits the use of data attribute phrases such as FORMAT.

Teradata Conversion Syntax

where:

 

Syntax element …

Specifies …

UDT_expression

an expression that results in a UDT data type.

For details on expressions that can result in UDT data types, see “SQL UDF” on page 1318.

data_attribute

one of the following optional data attributes:

  • FORMAT
  • NAMED
  • TITLE
  • character_data_type

    the target character type, for example CHAR or VARCHAR.

    ANSI Compliance

    This is a Teradata extension to the ANSI SQL:2011 standard.

    Usage Notes

    Data type conversions involving UDTs require appropriate cast definitions for the UDTs. To define a cast for a UDT, use the CREATE CAST statement. For more information on CREATE CAST, see SQL Data Definition Language.

    Implicit Type Conversion

    Teradata Database performs implicit UDT-to-character 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 book, 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 character type of the cast definition does not have to be an exact match to the target character type of the implicit conversion. Teradata Database can use an implicit cast definition that specifies a CHAR, VARCHAR, or CLOB target type.

    If multiple implicit cast definitions exist for converting the UDT to different character types, Teradata Database uses the implicit cast definition for the character type with the highest precedence. The following list shows the precedence of character types in order from lowest to highest precedence:

  • CHAR
  • VARCHAR
  • CLOB
  • If no UDT-to-character implicit cast definitions exist, Teradata Database looks for other cast definitions that can substitute for the UDT-to-character implicit cast definition:

     

    IF the following combination of implicit cast definitions exists …

    THEN Teradata Database …

    UDT-to-numeric

    UDT-to-DATE

    UDT-to-TIME

    UDT-to-TIMESTAMP

     

    X

     

     

    uses the UDT-to-numeric implicit cast definition.

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

     

    X

     

     

    uses the UDT-to-DATE implicit cast definition.

     

     

    X

     

    uses the UDT-to-TIME implicit cast definition.

     

     

     

    X

    uses the UDT-to-TIMESTAMP implicit cast definition.

    X

    X

     

     

    reports an error.

     

     

     

     

    X

     

    X

     

    X

     

     

    X

     

    X

    X

     

     

    X

     

    X

     

     

    X

    X

    X

    X

    X

     

    X

    X

     

    X

    X

     

    X

    X

     

    X

    X

    X

    X

    X

    X

    X

    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 character type.

    Example  

    Consider the following table definition, where euro is a UDT:

       CREATE TABLE euro_sales_table
          (quarter INTEGER
          ,region VARCHAR(20)
          ,sales euro );

    Assuming an appropriate cast definition exists for the euro UDT, the following statement converts the values in the sales column to CHAR(10):

       SELECT region, CAST (sales AS CHAR(10)) 
       FROM euro_sales_table
       WHERE quarter = 1;

    Related Topics

    For details on data types and data attributes, see SQL Data Types and Literals.