Funzione try_to_number
Si applica a: Databricks SQL Databricks Runtime 11.3 LTS e versioni successive
Restituisce expr
il cast a DECIMAL usando la formattazione fmt
o NULL
se expr
non corrisponde al formato.
Sintassi
try_to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Argomenti
expr
: espressione STRING che rappresenta un numero.expr
può includere spazi iniziali o finali.fmt
: valore letterale STRING, specificando il formato previsto diexpr
.
Valori restituiti
Decimal(p, s) dove p
è il numero totale di cifre (0
o 9
) e s
è il numero di cifre dopo il separatore decimale oppure 0 se non sono presenti cifre dopo il separatore decimale.
fmt
può contenere gli elementi seguenti (senza distinzione tra maiuscole e minuscole):
0
oppure9
Specifica una cifra prevista tra
0
e9
. Un0
oggetto a sinistra dei punti decimali indica cheexpr
deve avere almeno un numero di cifre. L'indicazione iniziale9
indica cheexpr
può omettere queste cifre.expr
non deve essere maggiore che il numero di cifre a sinistra del separatore decimale consenta.Le cifre a destra del decimale indicano che il numero massimo di cifre
expr
può avere a destra del separatore decimale specificato dafmt
..
oppureD
Specifica la posizione del separatore decimale.
expr
non deve includere un separatore decimale.,
oppureG
Specifica la posizione del separatore di
,
raggruppamento (migliaia). Deve essere presente un0
oggetto o9
a sinistra e a destra di ogni separatore di raggruppamento.expr
deve corrispondere al separatore di raggruppamento pertinente alla dimensione del numero.L
oppure$
Specifica la posizione del segno di
$
valuta. Questo carattere può essere specificato una sola volta.S
oppureMI
Specifica la posizione di un segno facoltativo '+' o '-' per
S
e '-' solo perMI
. Questa direttiva può essere specificata una sola volta.PR
Specifica che
expr
indica un numero negativo con parentesi angolate a capo (<1>
).
Se expr
contiene caratteri diversi da 0
tramite 9
o quelli consentiti in fmt
, viene restituito un oggetto NULL
.
Per l'uso semantico rigoroso to_number().
Esempi
-- 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