Udostępnij za pośrednictwem


Funkcja try_to_number

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak 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 oczekiwany exprformat .

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

    Określa oczekiwaną cyfrę między 0 i 9. Od 0 lewej strony punktów dziesiętnych wskazuje, że expr musi mieć co najmniej tyle cyfr. Wiodący 9 wskazuje, że expr 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 przez fmtwartość .

  • . lub D

    Określa położenie punktu dziesiętnego.

    expr nie musi zawierać punktu dziesiętnego.

  • , lub G

    Określa położenie separatora , grupowania (tysięcy). Musi istnieć znak 0 lub 9 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 lub MI

    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