Categorias:

Funções de conversão

TO_DOUBLE

Converte uma expressão em um número de ponto flutuante de dupla precisão.

Para a entrada NULL, o resultado é NULL.

Consulte também:

TRY_TO_DOUBLE

Sintaxe

TO_DOUBLE( <expr> [, '<format>' ] )
Copy

Argumentos

  • expr Uma expressão de um tipo numérico, de caractere ou variante.

  • format Se a expressão avalia como uma cadeia de caracteres, então a função aceita um modelo de formato opcional. Os modelos de formato são descritos em Modelos de formato SQL. O modelo de formato especifica o formato da cadeia de caracteres de entrada, não o formato do valor da saída.

Notas de uso

  • Os números de pontos fixos são convertidos em ponto flutuante; a conversão não pode falhar, mas pode resultar em perda de precisão.

  • As cadeias de caracteres são convertidas como números inteiros decimais ou fracionários, notação científica e valores especiais (nan, inf, infinidade) são aceitos.

  • Para entrada VARIANT:

    • Se a variante contiver um valor de ponto fixo, a conversão numérica será realizada.

    • Se a variante contiver um valor de ponto flutuante, o valor será preservado inalterado.

    • Se a variante contiver uma cadeia de caracteres, será realizada uma conversão da cadeia de caracteres.

    • Se a variante contiver um valor booleano, o resultado será 0 ou 1 (para falso e verdadeiro, correspondentemente).

    • Se a variante contiver um valor nulo JSON, a saída será NULL.

Observe que a conversão de frações decimais para binário e vice-versa não é precisa (ou seja, a impressão de um número de ponto flutuante convertido a partir da representação decimal pode produzir um número um pouco diferente). Se for necessária uma representação precisa das frações decimais, use números de pontos fixos.

Exemplos

Depois de criar uma tabela com colunas de diferentes tipos de dados, este script chama TO_DOUBLE em cada uma dessas colunas:

CREATE TABLE double_demo (d DECIMAL(7, 2), v VARCHAR, o VARIANT);
INSERT INTO double_demo (d, v, o) SELECT 1.1, '2.2', TO_VARIANT(3.14);
SELECT TO_DOUBLE(d), TO_DOUBLE(v), TO_DOUBLE(o) FROM double_demo;
Copy

Saída:

+--------------+--------------+--------------+
| TO_DOUBLE(D) | TO_DOUBLE(V) | TO_DOUBLE(O) |
|--------------+--------------+--------------|
|          1.1 |          2.2 |         3.14 |
+--------------+--------------+--------------+
Copy