Sdílet prostřednictvím


Funkce try_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, 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. 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 za desetinnou čárkou nejsou žádné číslice.

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í maximální počet číslic, které mohou mít vpravo od desetinné čárky expr určené fmthodnotou .

  • . 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

    Určuje záporné expr číslo se zalomenými závorkami (<1>).

Pokud expr obsahuje jiné znaky, než jsou 90 znaky, nebo ty, které jsou povoleny v fmt, NULL je vrácena.

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