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.

Anuncios

Responder

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: