Funktionen to_number
Gäller för: Databricks SQL 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örexpr
.
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
eller9
Anger en förväntad siffra mellan
0
och9
. A0
till vänster om decimaltecknet anger attexpr
det måste ha minst lika många siffror. Inledande9
indikerar attexpr
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 änfmt
vad som anges..
ellerD
Anger decimaltecknets position.
expr
behöver inte innehålla någon decimalpunkt.,
ellerG
Anger positionen för grupperingsavgränsaren
,
(tusentals). Det måste finnas en0
eller9
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
ellerMI
Anger positionen för ett valfritt "+" eller "-" -tecken för
S
, och "-" endast förMI
. 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 fmt
returneras 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 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