ROUND() y TRUNC() para valores numéricos en Teradata (II).

Hasta ahora, el redondeo y truncado de datos numéricos en Teradata se venía haciendo utilizando cambios de tipo (CASTs) aprovechando el tratamiento de la pérdida de precisión. Esto tenía el inconveniente de que podía llegar a dar resultados contradictorios (si no erróneos):

BTEQ -- Enter your SQL request or BTEQ command:
SELECT CAST (.015 as decimal(3,2)),
       CAST (.025 as decimal(3,2)),
       CAST (.035 as decimal(3,2));

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

 .015   .025   .035
-----  -----  -----
  .02    .02    .04

Afortunadamente Teradata 14 implementa (entre otras muchas) las funciones nativas ROUND() y TRUNC(),que obedecen a un criterio más racional que la técnica de los CASTs y que resultan más familiares a cualquiera que haya trabajado con RDBMSs. Además funcionan mejor:

 BTEQ -- Enter your SQL request or BTEQ command:
SELECT ROUND(.015,2),
       ROUND(.025,2),
       ROUND(.035,2);

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

ROUND(.015,2)  ROUND(.025,2)  ROUND(.035,2)
-------------  -------------  -------------
         .020           .030           .040

Así que, si estás trabajando con Teradata 14, olvida todo ese rollo de multiplicar, dividir y hacer ‘casting‘ para conseguir redondeos y truncamientos.

Saludos.

Carlos.

Anuncios

2 respuestas a ROUND() y TRUNC() para valores numéricos en Teradata (II).

  1. […] Nota: A partir de Teradata 14, puedes (y yo diría que debes) utilizar las funciones nativas ROUND() y TRUNC(), como se explica aquí. […]

  2. […] nativas, llamadas “Embedded Services System Functions” (ya hemos comentado algunas aquí) y desde luego no se oculta su origen ‘oraclero’: NVL(), NVL2(), TO_DATE(), TO_CHAR(), […]

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: