Funkcja try_to_number
Dotyczy: Databricks SQL Databricks Runtime 11.3 LTS i nowsze
Zwraca expr
rzutowanie do WARTOŚCI DZIESIĘTnej przy użyciu formatowania fmt
, lub NULL
jeśli expr
nie jest zgodne z formatem.
Składnia
try_to_number(expr, fmt)
fmt
{ ' [ MI | S ] [ L | $ ]
[ 0 | 9 | G | , ] [...]
[ . | D ]
[ 0 | 9 ] [...]
[ L | $ ] [ PR | MI | S ] ' }
Argumenty
expr
: wyrażenie STRING reprezentujące liczbę.expr
może zawierać spacje wiodące lub końcowe.fmt
: literał CIĄGU określający oczekiwanyexpr
format .
Zwraca
Liczba dziesiętna(p), gdzie p
jest całkowitą liczbą cyfr (0
lub 9
) i s
jest liczbą cyfr po przecinku dziesiętnym lub 0, jeśli nie ma cyfr po przecinku dziesiętnym.
fmt
może zawierać następujące elementy (bez uwzględniania wielkości liter):
0
lub9
Określa oczekiwaną cyfrę między
0
i9
. Od0
lewej strony punktów dziesiętnych wskazuje, żeexpr
musi mieć co najmniej tyle cyfr. Wiodący9
wskazuje, żeexpr
może pominąć te cyfry.expr
nie może być większy niż liczba cyfr z lewej strony punktu dziesiętnego.Cyfry z prawej strony liczby dziesiętnej wskazują maksymalną liczbę cyfr
expr
z prawej strony punktu dziesiętnego określonego przezfmt
wartość ..
lubD
Określa położenie punktu dziesiętnego.
expr
nie musi zawierać punktu dziesiętnego.,
lubG
Określa położenie separatora
,
grupowania (tysięcy). Musi istnieć znak0
lub9
po lewej i prawej stronie każdego separatora grupowania.expr
musi być zgodny z separatorem grupowania odpowiadającym rozmiarowi liczby.L
lub$
Określa lokalizację
$
znaku waluty. Ten znak można określić tylko raz.S
lubMI
Określa położenie opcjonalnego znaku "+" lub "-" tylko dla
S
, i "-" tylko dla .MI
Tę dyrektywę można określić tylko raz.PR
Określa, że
expr
wskazuje liczbę ujemną z zawijanymi nawiasami kątowymi (<1>
).
Jeśli expr
zawiera jakiekolwiek znaki inne niż 0
za pośrednictwem 9
, lub dozwolone w obiekcie fmt
, zwracana jest wartość .NULL
W przypadku ścisłego semantycznego użycia to_number().
Przykłady
-- 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