Tipos

TO_NUMBER

Convierte en número un texto escrito «a lo humano»: con comas o con símbolo de moneda.

Sintaxis

TO_NUMBER(<texto>, '<formato>')

El formato describe qué va en cada sitio: 9 es una cifra, , o G es el separador de miles, . o D es el punto decimal, y el resto de caracteres, como $, se saltan. Si el texto es simplemente un número como '42.5', no necesitas TO_NUMBER: basta con CAST o ::numeric.

Una coma entre los miles
SELECT TO_NUMBER('12,345.67', '99,999.99') AS amount;
amount
12345.67
Con símbolo de moneda
SELECT TO_NUMBER('$1,250.00', '$9,999.99') AS price;
price
1250.00
Frente a CAST
SELECT CAST('42.5' AS numeric) AS simple_cast,
TO_NUMBER('1,234.5', '9,999.9') AS with_format;
simple_castwith_format
42.51234.5

CAST solo se las arregla con un número «limpio»; 1,234.5 necesita un formato.

Ten en cuenta

CAST('12,345.67' AS numeric) da el error invalid input syntax for type numeric: un valor con comas necesita TO_NUMBER.

El formato debe abarcar todas las cifras; si no, las sobrantes se descartan en silencio: TO_NUMBER('12345', '999') da 123 sin ningún error.

G y D dependen de la configuración regional del servidor: en algunos sitios el separador de miles es un espacio o un punto. Para obtener resultados predecibles, escribe , y . directamente en el formato.

Funciones relacionadas