to_number
-Funktion
Gilt für: Databricks SQL 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 vonexpr
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
oder9
Gibt eine erwartete Ziffer zwischen
0
und9
an. Ein0
links vom Dezimalzeichen zeigt an, dassexpr
mindestens so viele Ziffern aufweisen muss. Ein führendes9
gibt an, dassexpr
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, alsfmt
angibt..
oderD
Gibt die Position des Dezimalzeichens an.
expr
muss kein Dezimalzeichen enthalten.,
oderG
Gibt die Position des
,
-Trennzeichens für die Gruppierung (Tausender) an. Es muss ein0
oder9
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
oderMI
Gibt die Position eines optionalen „+“- oder „-“-Zeichens für
S
, und „-“ nur fürMI
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