try_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 opmaak fmt
of NULL
als expr
deze niet overeenkomt met de notatie.
Syntaxis
try_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 is als er geen cijfers achter het decimaalteken staan.
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 het maximum aantal cijfers
expr
aan aan de rechterkant van het decimaalteken dat is opgegeven doorfmt
..
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
expr
Hiermee geeft u een negatief getal aan met haakjes in de terugloop (<1>
).
Als expr
er andere tekens zijn dan 0
via 9
, of tekens die zijn toegestaan in fmt
, wordt een NULL
geretourneerd.
Voor strikt semantisch gebruik 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 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