La función TO_NUMBER de Oracle

Imagen destacada para la función TO_NUMBER de Oracle en AT

Con la función TO_NUMBER vamos a convertir texto en números dentro de Oracle.

Es útil cuando recibimos números como texto y necesitamos hacer cálculos, ordenar correctamente o guardar el dato en una columna numérica.

Sintaxis

TO_NUMBER(expr [, formato [, parametros_nls]])
  • expr es el texto o expresión que queremos convertir.
  • formato indica cómo debe interpretar Oracle el número.
  • parametros_nls permite indicar separadores decimal/miles o moneda cuando no queremos depender de la configuración de sesión.

Para conversiones simples, Oracle puede interpretar directamente una cadena numérica:

SELECT TO_NUMBER('1234') AS numero
FROM dual;

Resultado:

NUMERO
------
  1234

Si el texto usa separadores concretos, conviene indicarlos de forma explícita:

SELECT TO_NUMBER(
         '1.234,56',
         '9G999D99',
         'NLS_NUMERIC_CHARACTERS='',.'''
       ) AS numero
FROM dual;

Resultado:

NUMERO
-------
1234.56

También se puede convertir un importe con símbolo de moneda si el formato lo contempla:

SELECT TO_NUMBER(
         'EUR 250,75',
         'L999D99',
         'NLS_CURRENCY=''EUR '' NLS_NUMERIC_CHARACTERS='',.'''
       ) AS importe
FROM dual;

Resultado:

IMPORTE
-------
 250.75

Notas

  • Si el texto no encaja con el formato indicado, Oracle devolverá error de conversión.
  • Para datos con coma decimal o punto de miles, es mejor definir el formato y los parámetros NLS en la consulta.
  • Si solo se quiere mostrar un número como texto, la función adecuada suele ser TO_CHAR, no TO_NUMBER.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *