Freigeben über


to_number-Funktion

Gilt für: Häkchen ja Databricks SQL Häkchen gesetzt ja Databricks Runtime 11.3 LTS und höher

Gibt expr zurück, das mithilfe der Formatierung fmt in einen Dezimalwert umgewandelt wurde.

Syntax

to_number(expr, fmt)

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

Argumente

  • expr: Ein STRING-Ausdruck, der eine Zahl darstellt. expr kann führende oder nachstehende Leerzeichen enthalten.
  • fmt: Ein STRING-Literal, das das erwartete Format von expr angibt.

Gibt zurück

DECIMAL(p, s), wobei p die Gesamtzahl der Ziffern (0 oder 9) und s die Anzahl der Nachkommastellen oder 0 ist, wenn es keine gibt.

fmt kann die folgenden Elemente enthalten (Groß-/Kleinschreibung wird nicht beachtet):

  • 0 oder 9

    Gibt eine erwartete Ziffer zwischen 0 und 9 an. Ein 0 links vom Dezimalzeichen zeigt an, dass expr mindestens so viele Ziffern aufweisen muss. Ein führendes 9 gibt an, dass expr diese Ziffern weggelassen kann.

    expr darf nicht größer sein, als es die Anzahl der Ziffern links vom Dezimalzeichen gestattet.

    Ziffern rechts neben dem Dezimalzeichen deuten auf die maximale Anzahl von Ziffern hin, die expr rechts neben dem Dezimalzeichen aufweisen darf, als fmt angibt.

  • . oder D

    Gibt die Position des Dezimalzeichens an.

    expr muss kein Dezimalzeichen enthalten.

  • , oder G

    Gibt die Position des ,-Trennzeichens für die Gruppierung (Tausender) an. Es muss ein 0 oder 9 links oder rechts von jedem Gruppierungstrennzeichen vorhanden sein. expr muss mit dem für die Größe der Zahl relevanten Gruppierungstrennzeichen übereinstimmen.

  • L oder $

    Gibt die Position des $-Währungszeichens an. Dieses Zeichen darf nur einmal angegeben werden.

  • S oder MI

    Gibt die Position eines optionalen „+“- oder „-“-Zeichens für S, und „-“ nur für MI an. Diese Anweisung darf nur einmal angegeben werden.

  • PR

    Nur am Ende der Formatzeichenfolge zulässig. Gibt an, dass expr eine negative Zahl mit umschließenden spitzen Klammern (<1>) angibt.

Wenn expr andere Zeichen als 0 bis 9 oder Zeichen enthält, die in fmt erlaubt sind, wird ein Fehler zurückgegeben.

Um NULL anstelle eines Fehlers für das ungültige expr zurückzugeben, verwenden Sie try_to_number().

Beispiele

-- 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