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 formátováním fmt.
Syntaxe
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: Řetězec literálu, který určuje 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 neexistuje.
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. Vedoucí9naznačuje, žeexprmůže tyto číslice vynechat.exprnesmí být větší než počet číslic vlevo od desetinné čárky umožňuje.Číslice napravo od desetinné čárky označují maximální počet číslic, které může
exprmít napravo od desetinné čárky, než určujefmt..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.PRPovoleno pouze na konci formátovací řetězec; určuje záporné
exprčíslo s zalomenými hranatými závorkami (<1>).
Pokud expr obsahuje jakékoli znaky jiné než znaky v rozmezí 0 až 9, nebo znaky povolené v fmt, vrátí se chyba.
Chcete-li vrátit NULL místo chyby pro neplatné expr, použijte try_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 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