try_to_number
-Funktion
Gilt für: Databricks SQL Databricks Runtime 11.3 LTS und höher
Gibt expr
zurück, das mit der Formatierung fmt
(oder NULL
, wenn expr
nicht mit dem Format übereinstimmt) in einen Dezimalwert umgewandelt wurde.
Syntax
try_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 Ziffern nach dem Dezimalzeichen 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.Die Ziffern rechts vom Dezimalzeichen geben die maximale Anzahl der Ziffern an, die
expr
rechts vom Dezimalzeichen aufweisen kann, die durchfmt
angegeben wird..
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
Gibt an, dass
expr
eine negative Zahl mit umschließenden spitzen Klammern (<1>
) angibt.
Wenn expr
andere Zeichen als 0
bis 9
(oder die in fmt
zulässig sind) enthält, wird NULL
zurückgegeben.
Verwenden Sie für eine strikte Semantik 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 try_to_number('-$12,345.67', 'S$999,099.99');
-12345.67
-- Plus is optional, and so are fractional digits.
> SELECT try_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 number
-- 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 try_to_number('$045', 'S$999,099.99');
45.00
-- Using brackets to denote negative values
> SELECT try_to_number('<1234>', '999999PR');
-1234