Funkce to_number

Platí pro:označeno zatržítkem ano Databricks SQL označeno zatržítkem ano 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. expr může obsahovat úvodní nebo koncové mezery.
  • fmt: Řetězec literálu, který určuje očekávaný formát expr.

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):

  • 0 nebo 9

    Určuje očekávanou číslici mezi 0 a 9. Vlevo 0 od desetinných míst je uvedeno, že expr musí mít alespoň tolik číslic. Vedoucí 9 naznačuje, že expr 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čuje fmt.

  • . nebo D

    Určuje pozici desetinné čárky.

    expr nemusí obsahovat desetinnou čárku.

  • , nebo G

    Určuje pozici , oddělovače seskupení (tisíce). U každého oddělovače seskupení musí být 0 vlevo nebo 9 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 nebo MI

    Určuje pozici volitelného znaku '+' nebo '-' pro S a pouze znaku '-' pro MI. 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í 09, 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