Dela via


Funktionen to_number

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime 11.3 LTS och senare

Returnerar expr gjuten till DECIMAL med hjälp av formatering fmt.

Syntax

to_number(expr, fmt)

fmt
  { ' [ MI | S ] [ L | $ ]
      [ 0 | 9 | G | , ] [...]
      [ . | D ]
      [ 0 | 9 ] [...]
      [ L | $ ] [ PR | MI | S ] ' }

Argument

  • expr: Ett STRING-uttryck som representerar ett tal. expr kan innehålla inledande eller avslutande blanksteg.
  • fmt: En STRING-literal som anger det förväntade formatet för expr.

Returer

En DECIMAL(p, s) där p är det totala antalet siffror (0 eller 9) och s är antalet siffror efter decimaltecknet, eller 0 om det inte finns några.

fmt kan innehålla följande element (skiftlägesokänsligt):

  • 0 eller 9

    Anger en förväntad siffra mellan 0 och 9. A 0 till vänster om decimaltecknet anger att expr det måste ha minst lika många siffror. Inledande 9 indikerar att expr dessa siffror kan utelämnas.

    expr får inte vara större än antalet siffror till vänster om decimaltecknet tillåter.

    Siffror till höger om decimaltecknet anger att de flesta siffror expr kan ha till höger om decimaltecknet än fmt vad som anges.

  • . eller D

    Anger decimaltecknets position.

    expr behöver inte innehålla någon decimalpunkt.

  • , eller G

    Anger positionen för grupperingsavgränsaren , (tusentals). Det måste finnas en 0 eller 9 till vänster och höger om varje grupperingsavgränsare. expr måste matcha den grupperingsavgränsare som är relevant för talets storlek.

  • L eller $

    Anger valutatecknets $ plats. Det här tecknet kan bara anges en gång.

  • S eller MI

    Anger positionen för ett valfritt "+" eller "-" -tecken för S, och "-" endast för MI. Detta direktiv får endast anges en gång.

  • PR

    Tillåts endast i slutet av formatsträngen. anger ett expr negativt tal med omslutande vinklade hakparenteser (<1>).

Om expr innehåller andra tecken än 0 via 9, eller tecken som tillåts i fmtreturneras ett fel.

NULL Returnera i stället för ett fel för ogiltig expr användning try_to_number().

Exempel

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