Função to_number
Aplica-se a: Databricks SQL Databricks Runtime 11.3 LTS e superior
Retorna expr
a conversão para DECIMAL usando a formatação fmt
.
Sintaxe
to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Argumentos
expr
: Uma expressão STRING que representa um número.expr
pode incluir espaços à esquerda ou à direita.fmt
: Um literal STRING, especificando o formato esperado deexpr
.
Devoluções
A DECIMAL(p, s) onde p
é o número total de dígitos (0
ou 9
) e s
é o número de dígitos após a vírgula decimal, ou 0 se não houver.
fmt
pode conter os seguintes elementos (não diferencia maiúsculas de minúsculas):
0
ou9
Especifica um dígito esperado entre
0
e9
. A0
à esquerda das casas decimais indica queexpr
deve ter pelo menos tantos dígitos. A esquerda9
indica queexpr
pode omitir esses dígitos.expr
não deve ser maior do que o número de dígitos à esquerda da vírgula decimal permite.Os algarismos à direita da casa decimal indicam que a maioria dos algarismos
expr
pode ter à direita da vírgula decimal do quefmt
especifica..
ouD
Especifica a posição da vírgula decimal.
expr
não precisa incluir um ponto decimal.,
ouG
Especifica a posição do
,
separador de agrupamento (milhares). Deve haver um0
ou9
à esquerda e à direita de cada separador de agrupamento.expr
deve corresponder ao separador de agrupamento relevante para o tamanho do número.L
ou$
Especifica o local do
$
sinal de moeda. Este carácter só pode ser especificado uma vez.S
ouMI
Especifica a posição de um sinal opcional '+' ou '-' para
S
, e '-' apenas paraMI
. Esta diretiva só pode ser especificada uma vez.PR
Permitido apenas no final da cadeia de caracteres de formato; especifica que
expr
indica um número negativo com colchetes angulares de encapsulamento (<1>
).
Se expr
contiver caracteres diferentes de através 9
de 0
, ou caracteres permitidos em fmt
, um erro será retornado.
Para retornar NULL
em vez de um erro para uso inválido expr
try_to_number ().
Exemplos
-- 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_FORMAT.MISMATCH_INPUT
-- 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