Compartilhar via


Função try_to_number

Aplica-se a: verificação marcada como sim Databricks SQL verificação marcada como sim Databricks Runtime 11.3 LTS e versões posteriores

Retornará expr convertido em DECIMAL usando a formatação fmt ou retornará NULL se expr não corresponder ao formato.

Sintaxe

try_to_number(expr, fmt)

fmt
  { ' [ MI | S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

Argumentos

  • expr: uma expressão STRING representando um número. expr pode incluir espaços à esquerda ou à direita.
  • fmt: um literal STRING, especificando o formato esperado de expr.

Retornos

Um DECIMAL(p, s) em que p será o número total de dígitos (0 ou 9) e s será o número de dígitos após o ponto decimal, ou 0, se não houver dígitos após o ponto decimal.

fmt pode conter os seguintes elementos (diferencia maiúsculas de minúsculas):

  • 0 ou 9

    Especifica um dígito esperado entre 0 e 9. O 0 à esquerda dos pontos decimais indica que expr precisa ter pelo menos esse número de dígitos. O 9 à esquerda indica que expr pode omitir esses dígitos.

    expr não pode ser maior que o número de dígitos permitido à esquerda do ponto decimal.

    Dígitos à direita do decimal indicam o número máximo de dígitos que expr pode ter à direita do ponto decimal além do especificado por fmt.

  • . ou D

    Especifica a posição do ponto decimal.

    expr não precisa incluir um ponto decimal.

  • , ou G

    Especifica a posição do separador de agrupamento , (milhares). Precisa haver um 0 ou 9 à esquerda e à direita de cada separador de agrupamento. expr precisa corresponder ao separador de agrupamento relevante ao tamanho do número.

  • L ou $

    Especifica o local do sinal de moeda $. Esse caractere só pode ser especificado uma vez.

  • S ou MI

    Especifica a posição de um sinal opcional '+' ou '-' para S, e '-' somente para MI. Essa diretiva pode ser especificada apenas uma vez.

  • PR

    Especifica que expr indica um número negativo com colchetes angulares de encapsulamento (<1>).

Se expr contiver caracteres diferentes de 0 a 9 ou daqueles permitidos em fmt, um NULL será retornado.

Para semântica estrita, use 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 try_to_number('-$12,345.67', 'S$999,099.99');
 -12345.67

-- Plus is optional, and so are fractional digits.
> SELECT try_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 try_to_number('$045', 'S$999,099.99');
 45.00

-- Using brackets to denote negative values
> SELECT try_to_number('<1234>', '999999PR');
 -1234