Funkce to_number
Platí pro: Databricks SQL
Databricks Runtime 11.3 LTS a vyšší
Vrátí expr
převedené na DECIMAL formátováním fmt
.
to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
-
expr
: Výraz STRING představující číslo.expr
může obsahovat úvodní nebo koncové mezery. -
fmt
: Řetězec literálu, který určuje očekávaný formátexpr
.
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):
0
nebo9
Určuje očekávanou číslici mezi
0
a9
. Vlevo0
od desetinných míst je uvedeno, žeexpr
musí mít alespoň tolik číslic. Vedoucí9
naznačuje, žeexpr
může tyto číslice vynechat.expr
nesmí 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
expr
mít napravo od desetinné čárky, než určujefmt
..
neboD
Určuje pozici desetinné čárky.
expr
nemusí obsahovat desetinnou čárku.,
neboG
Určuje pozici
,
oddělovače seskupení (tisíce). U každého oddělovače seskupení musí být0
vlevo nebo9
vpravo.expr
musí odpovídat oddělovači seskupení, který je relevantní pro velikost čísla.L
nebo$
Určuje umístění znaménka
$
měny. Tento znak lze zadat pouze jednou.S
neboMI
Určuje pozici volitelného znaku '+' nebo '-' pro
S
a pouze znaku '-' proMI
. Tuto direktivu lze zadat pouze jednou.PR
Povoleno 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().
-- 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