Bagikan melalui


try_to_number fungsi

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime 11.3 LTS ke atas

Mengembalikan expr yang diubah menjadi DECIMAL dengan format fmt, atau NULL jika expr tidak sesuai dengan format tersebut.

Sintaks

try_to_number(expr, fmt)

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

Argumen

  • expr: Ekspresi STRING yang mewakili angka. expr dapat mencakup spasi di awal atau di akhir.
  • fmt: String literal, menentukan format yang diharapkan dari expr.

Mengembalikan

DECIMAL(p, s) di mana p adalah jumlah total digit (0 atau 9) dan s merupakan jumlah digit setelah titik desimal, atau 0 jika tidak ada digit setelah titik desimal.

fmt dapat berisi elemen berikut (tidak peka huruf besar/kecil):

  • 0 atau 9

    Menentukan digit yang diharapkan antara 0 dan 9. A 0 di sebelah kiri titik desimal menunjukkan bahwa expr harus memiliki setidaknya sebanyak digit. Di awal 9 menunjukkan bahwa expr dapat menghilangkan digit ini.

    expr tidak boleh lebih besar dari jumlah digit yang diizinkan di sisi kiri titik desimal.

    Digit di sebelah kanan desimal menunjukkan jumlah maksimum digit expr mungkin harus di sebelah kanan titik desimal yang ditentukan oleh fmt.

  • . atau D

    Menentukan posisi titik desimal.

    expr tidak perlu menyertakan titik desimal.

  • , atau G

    Menentukan posisi pemisah , pengelompokan (ribuan). Harus ada 0 atau 9 di sebelah kiri dan kanan setiap pemisah pengelompokan. expr harus cocok dengan pemisah pengelompokan yang relevan dengan ukuran angka.

  • L atau $

    Menentukan lokasi $ tanda mata uang. Karakter ini hanya dapat ditentukan sekali.

  • S atau MI

    Menentukan posisi tanda '+' atau '-' opsional untuk S, dan '-' hanya untuk MI. Arahan ini hanya dapat ditentukan sekali.

  • PR

    Menentukan bahwa expr menetapkan angka negatif dengan tanda kurung sudut mengapit (<1>).

Jika expr berisi karakter apa pun selain 0 melalui 9, atau yang diizinkan dalam fmt, akan NULL dikembalikan.

Untuk penggunaan semantik yang ketat, gunakan to_number().

Contoh

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