Función to_number
Se aplica a: Databricks SQL Databricks Runtime 11.3 LTS y versiones posteriores
Devuelve la conversión expr
a DECIMAL con el formato fmt
.
Sintaxis
to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Argumentos
expr
: Expresión STRING que representa un número.expr
puede incluir espacios iniciales o finales.fmt
: Literal de STRING que especifica el formato esperado deexpr
.
Devoluciones
Un DECIMAL(p, s), donde p
es el número total de dígitos (0
o 9
), y s
es el número de dígitos después del separador decimal, o 0 si no hay ninguno.
fmt
puede contener los siguientes elementos (sin distinción entre mayúsculas y minúsculas):
0
o9
Especifica un dígito esperado entre
0
y9
. Un0
a la izquierda de los puntos decimales indica queexpr
debe tener al menos tantos dígitos. El9
inicial indica queexpr
puede omitir estos dígitos.expr
no debe ser mayor que lo permitido por el número de dígitos a la izquierda del separador decimal.Los dígitos situados a la derecha del decimal indican el número máximo de dígitos que puede tener
expr
a la derecha del separador decimal especificado porfmt
..
oD
Especifica la posición del separador decimal.
expr
no es necesario incluir un separador decimal.,
oG
Especifica la posición del separador de agrupación (miles)
,
. Tiene que haber un0
o9
a la izquierda y a la derecha de cada separador de agrupación.expr
tiene que coincidir con el separador de agrupación pertinente para el tamaño del número.L
o$
Especifica la ubicación del signo de moneda
$
. Este carácter solo se puede especificar una vez.S
oMI
Especifica la posición de un signo opcional "+" o "-" para
S
, y "-" solo paraMI
. Esta directiva solo se puede especificar una vez.PR
Solo se permite al final de la cadena de formato; especifica que
expr
indica un número negativo con corchetes angulares de ajuste (<1>
).
Si expr
contiene caracteres que no sean de 0
a 9
, o caracteres permitidos en fmt
, se devuelve un error.
Para devolver NULL
en lugar de un error de expr
no válido, use try_to_number().
Ejemplos
-- The format expects:
-- * an optional sign at the beginning,
-- * followed by a dollar sign,
-- * followed by a number between 3 and 6 digits long,
-- * thousands separators,
-- * up to two dight beyond the decimal point.
> SELECT to_number('-$12,345.67', 'S$999,099.99');
-12345.67
-- Plus is optional, and so are fractional digits.
> SELECT to_number('$345', 'S$999,099.99');
345.00
-- The format requires at least three digits.
> SELECT to_number('$45', 'S$999,099.99');
Error: Invalid number
-- The format requires at least three digits.
> SELECT try_to_number('$45', 'S$999,099.99');
NULL
-- The format requires at least three digits
> SELECT to_number('$045', 'S$999,099.99');
45.00
-- Using brackets to denote negative values
> SELECT to_number('<1234>', '999999PR');
-1234