Sdílet prostřednictvím


Funkce try_to_number

Platí pro:zaškrtnuto ano Databricks SQL zaškrtnuto ano Databricks Runtime 11.3 LTS a vyšší

Vrátí expr převedený 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. Počáteční 9 číslice značí, že je možné tyto číslice expr vynechat.

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

    Číslice napravo od desetinné čárky označují maximální počet číslic, které expr může mít vpravo od desetinné čárky, určené hodnotou 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 '-' pro MI. Tuto direktivu lze zadat pouze jednou.

  • PR

    Určuje, že expr označuje záporné číslo s lomenými závorkami (<1>).

Pokud expr obsahuje jakékoli jiné znaky než znaky od 0 po 9, nebo ty, které jsou povoleny v fmt, je vrácena NULL.

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