Catégories :

Fonctions de conversion

TO_DOUBLE

Convertit une expression en un nombre à virgule flottante de double précision.

Pour NULL, le résultat est NULL.

Voir aussi :

TRY_TO_DOUBLE

Syntaxe

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

Arguments

  • expr Expression de type numérique, caractère ou variante.

  • format Si l’expression renvoie une chaîne, la fonction accepte un modèle de format facultatif. Les modèles de format sont décrits à l’emplacement : Modèles de format SQL. Le modèle de format spécifie le format de la chaîne d’entrée, pas le format de la valeur de sortie.

Notes sur l’utilisation

  • Les nombres à virgule fixe sont convertis en virgule flottante ; la conversion ne peut pas échouer, mais peut entraîner une perte de précision.

  • Les chaînes sont converties en nombres décimaux entiers ou fractionnaires, la notation scientifique et les valeurs spéciales (nan, inf, infinity) sont acceptées.

  • Pour une entrée VARIANT :

    • Si la variante contient une valeur à virgule fixe, la conversion numérique est effectuée.

    • Si la variante contient une valeur à virgule flottante, la valeur sera conservée telle quelle.

    • Si la variante contient une chaîne, une conversion de chaîne sera effectuée.

    • Si la variante contient une valeur booléenne, le résultat sera 0 ou 1 (pour false et true, en conséquence).

    • Si la variante contient la valeur JSON null, le résultat sera NULL.

Notez que la conversion des fractions décimales en valeurs binaires et inverses n’est pas précise (c’est-à-dire que l’impression d’un nombre à virgule flottante converti à partir de la représentation décimale pourrait produire un nombre légèrement différent). Si une représentation précise des fractions décimales est requise, utilisez des nombres à virgule fixe.

Exemples

Après avoir créé une table avec des colonnes de types de données différents, ce script appelle TO_DOUBLE sur chacune de ces colonnes :

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

Sortie :

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