to_number fungsi

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

Mengembalikan expr diubah ke DESIMAL menggunakan format fmt.

Sintaks

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 akhir.
  • fmt: String literal, menentukan format yang diharapkan dari expr.

Pengembalian

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

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

  • 0 atau 9

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

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

    Digit di sebelah kanan titik desimal menunjukkan bahwa expr mungkin memiliki lebih banyak digit di sebelah kanan titik desimal daripada yang ditentukan oleh fmt.

  • . atau D

    Menentukan posisi titik desimal.

    expr tidak perlu menyertakan titik desimal.

  • , atau G

    Menentukan posisi pengelompokan (ribuan) pemisah ,. 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

    Hanya diizinkan di akhir string format; menentukan bahwa expr menunjukkan angka negatif dengan tanda kurung sudut meliputi (<1>).

Jika expr berisi karakter selain 0 melalui 9, atau karakter yang diizinkan dalam fmt, Azure Databricks menimbulkan kesalahan INVALID_FORMAT.

Untuk mengembalikan NULL alih-alih kesalahan untuk expr yang tidak valid, gunakan try_to_number().

Kondisi kesalahan umum

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 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_FORMAT.MISMATCH_INPUT

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