Kategorien:

Konvertierungsfunktionen

TO_DOUBLE

Konvertiert einen Ausdruck in eine Gleitkommazahl mit doppelter Genauigkeit.

Bei Eingabe von NULL ist das Ergebnis NULL.

Siehe auch:

TRY_TO_DOUBLE

Syntax

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

Argumente

  • Ausdruck ist der Ausdruck eines numerischen, Zeichen- oder Variant-Typs.

  • Format ist ein optionales Formatmodell, das von der Funktion akzeptiert wird, wenn der Ausdruck eine Zeichenfolge ergibt. Beschreibungen zu Formatmodellen finden Sie unter SQL-Formatmodelle. Das Formatmodell gibt das Format der Eingabezeichenfolge an, nicht das Format des Ausgabewerts.

Nutzungshinweise

  • Festkommazahlen werden in Gleitkommazahlen umgewandelt; die Konvertierung kann zwar nicht fehlschlagen, jedoch zu Verlusten bei der Genauigkeit führen.

  • Zeichenfolgen werden als dezimale Ganzzahlen oder Bruchzahlen konvertiert; wissenschaftliche Notation und Sonderwerte (nan, inf, infinity) werden akzeptiert.

  • Bei VARIANT-Eingaben:

    • Wenn die Variante einen Festkommawert enthält, wird die numerische Konvertierung durchgeführt.

    • Wenn die Variante einen Gleitkommawert enthält, bleibt der Wert unverändert.

    • Wenn die Variante eine Zeichenfolge enthält, wird eine Zeichenfolgenkonvertierung vorgenommen.

    • Wenn die Variante einen booleschen Wert enthält, ist das Ergebnis 0 oder 1 (für „false“ bzw. „true“).

    • Wenn die Variante einen JSON null-Wert enthält, lautet die Ausgabe NULL.

Beachten Sie, dass eine Konvertierung von Dezimalbrüchen in Binärwerte und zurück ungenau ist (d. h. die Ausgabe einer Gleitkommazahl, die aus einer Dezimaldarstellung konvertiert wurde, kann eine leicht andere Zahl ergeben). Wenn eine genaue Darstellung von Dezimalbrüchen erforderlich ist, sollten Sie Festkommazahlen verwenden.

Beispiele

Nach dem Erstellen einer Tabelle mit Spalten unterschiedlicher Datentypen ruft dieses Skript für jede der Spalten TO_DOUBLE auf:

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;

Ausgabe:

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