to_number
-functie
Van toepassing op: Databricks SQL Databricks Runtime 11.3 LTS en hoger
expr
Hiermee wordt cast naar DECIMAL geretourneerd met behulp van opmaakfmt
.
Syntaxis
to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Argumenten
expr
: een TEKENREEKS-expressie die een getal vertegenwoordigt.expr
kan voorloop- of volgspaties bevatten.fmt
: Een letterlijke tekenreeks, waarbij de verwachte notatie vanexpr
.
Retouren
Een DECIMAL(p, s) waarbij p
het totale aantal cijfers (0
of 9
) is en s
het aantal cijfers na het decimaalteken of 0 als er geen cijfers zijn.
fmt
kan de volgende elementen bevatten (niet hoofdlettergevoelig):
0
of9
Hiermee geeft u een verwacht cijfer tussen
0
en9
. Een0
links van de decimalen geeft aan datexpr
er ten minste zoveel cijfers moeten zijn. Voorloop9
geeft aan datexpr
deze cijfers kunnen worden weggelaten.expr
mag niet groter zijn dan het aantal cijfers links van het decimaalteken is toegestaan.Cijfers rechts van het decimaalteken geven aan dat de meeste cijfers
expr
mogelijk rechts van het decimaalteken moeten zijn danfmt
opgegeven..
ofD
Hiermee geeft u de positie van het decimaalteken.
expr
hoeft geen decimaalteken op te nemen.,
ofG
Hiermee geeft u de positie van het
,
groeperingsscheidingsteken (duizendtallen). Er moet een0
of9
rechts van elk groeperingsscheidingsteken zijn.expr
moet overeenkomen met het groeperingsscheidingsteken dat relevant is voor de grootte van het getal.L
of$
Hiermee geeft u de locatie van het
$
valutateken. Dit teken mag slechts eenmaal worden opgegeven.S
ofMI
Hiermee geeft u de positie van een optioneel '+' of '-' teken voor
S
, en '-' alleen voorMI
. Deze richtlijn mag slechts één keer worden opgegeven.PR
Alleen toegestaan aan het einde van de notatietekenreeks; geeft aan dat
expr
een negatief getal wordt aangegeven met schuine haken in de terugloop (<1>
).
Als expr
er andere tekens zijn dan 0
via 9
, of tekens die zijn toegestaan in fmt
, wordt een fout geretourneerd.
Als u wilt terugkeren NULL
in plaats van een fout voor ongeldig expr
gebruik try_to_number().
Voorbeelden
-- 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