Sdílet prostřednictvím


Funkce to_number

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 11.3 LTS a vyšší

Vrátí expr přetypování na decimal pomocí formátování 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: Literál STRING určující 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. Na úvodním 9 znaméně je expr možné tyto číslice vynechat.

    expr nesmí být větší, aby počet číslic vlevo od desetinné čárky umožňoval.

    Číslice napravo od desetinné čárky označují nejvíce číslic vpravo od desetinné čárky expr , než fmt určuje.

  • . 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 -, pouze Spro 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 jiné znaky, než 0 9jsou znaky , nebo znaky povolené v fmt, vrátí se chyba.

Pokud se chcete vrátit NULL místo chyby pro neplatné expr použití 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 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 to_number('$045', 'S$999,099.99');
 45.00

-- Using brackets to denote negative values
> SELECT to_number('<1234>', '999999PR');
 -1234