Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Funkce
Platí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a vyšší
Vrátí expr převedený na DECIMAL pomocí formátování fmt, nebo NULL, pokud expr neodpovídá formátu.
Syntaxe
try_to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Argumenty
-
expr: Výraz STRING představující číslo.exprmůže obsahovat úvodní nebo koncové mezery. -
fmt: Literál STRING určující očekávaný formátexpr.
Návraty
A DECIMAL(p; s), kde p je celkový počet číslic (0 nebo 9) a s je počet číslic za desetinnou čárkou nebo 0, pokud za desetinnou čárkou nejsou žádné číslice.
fmt může obsahovat následující prvky (nerozlišují malá a velká písmena):
0nebo9Určuje očekávanou číslici mezi
0a9. Vlevo0od desetinných míst je uvedeno, žeexprmusí mít alespoň tolik číslic. Počáteční9číslice značí, že je možné tyto čísliceexprvynechat.exprnesmí být větší, než umožňuje počet číslic vlevo od desetinné čárky.Číslice napravo od desetinné čárky označují maximální počet číslic, které
exprmůže mít vpravo od desetinné čárky, určené hodnotoufmt..neboDUrčuje pozici desetinné čárky.
exprnemusí obsahovat desetinnou čárku.,neboGUrčuje pozici
,oddělovače seskupení (tisíce). U každého oddělovače seskupení musí být0vlevo nebo9vpravo.exprmusí odpovídat oddělovači seskupení, který je relevantní pro velikost čísla.Lnebo$Určuje umístění znaménka
$měny. Tento znak lze zadat pouze jednou.SneboMIUrčuje pozici volitelného znaku '+' nebo '-' pro
S, a pouze '-' proMI. Tuto direktivu lze zadat pouze jednou.PRUrčuje, že
exproznačuje záporné číslo s lomenými závorkami (<1>).
Pokud expr obsahuje jakékoli jiné znaky než znaky od 0 po 9, nebo ty, které jsou povoleny v fmt, je vrácena NULL.
Pro striktní sémantické použití to_number().
Příklady
-- 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