No siempre es lo mismo…

La conversión de tipos explícita (casting) en Teradata puede hacerse de dos modos: el “nativo”, que consiste en añadir entre paréntesis el tipo destino junto al valor al que queremos transformar; y el ANSI, mediante la construcción CAST(… AS …).

Ambas formas son correctas y casi siempre intercambiables, pero hay excepciones:

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT 123456 (CHAR(6)),
       CAST(123456 AS CHAR(6));


 *** Query completed. One row found. 2 columns returned.
 *** Total elapsed time was 1 second.

123456  123456
------  ------
     1  123456

 BTEQ -- Enter your SQL request or BTEQ command:

En efecto, el modo nativo efectúa una conversión automática a partir del valor original (un integer, de rango -2147483648 , 2147483647), que necesita 11 posiciones. Al convertirlo a CHAR(6) toma los primeros 5 espacios y trunca desde ahí (por eso solamente muestra ‘1’), mientras que el ANSI elimina (trim) los espacios de inicio al crear la cadena final.

Saludos.

Carlos.

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: