Sintaxis.
TO_NUMBER(expr [, fmt [,nlsparam ] ])
Proposito
La función TO_NUMBER() convierte expr1 en un valor de tipo de dato NUMBER. El valor expr1 puede ser un valor de tipo de dato BINARY_DOUBLE o un valor de tipo de dato CHAR, VARCHAR2, NCHAR o NVARCHAR2 que contiene un número en el formato especificado por el modelo opcional de la mascara fmt.
Puedes especificar una expresión, expr1, de tipo BINARY_FLOAT. Sin embargo, no tiene sentido hacerlo porque un tipo float solo puede ser interpretado por su presentación interna.
Esta función no es compatible con los datos CLOB directamente. Sin embargo, CLOB se pueden pasar como argumentos a través de la conversión de datos implícita.
El argumento nlsparam en esta función tiene el mismo propósito que en la función TO_CHAR(). Consulta TO_CHAR() para más información.
Puedes ver el formato de la mascará para fmt en el artículo sobre la función TO_CHAR()
La función NVL() se puede utilizar tanto en Oracle 10g como en Oracle 11g.
Ejemplo
SQL>SELECT TO_NUMBER('1,123.45','9,999.99') Numero FROM DUAL;
NUMERO
----------
1123,45
SQL>SELECT TO_NUMBER(',000.90',',999.99') Numero FROM DUAL;
NUMERO
----------
1000,9