Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Fungsi TO_CHAR(angka) di Oracle

Di Oracle Database, TO_CHAR(number) fungsi mengonversi angka menjadi VARCHAR2 nilai dalam format yang ditentukan oleh argumen format.

Sintaks

Sintaksnya seperti ini:

TO_CHAR(n [, fmt [, 'nlsparam' ] ])

Dimana:

  • n bisa berupa NUMBER , BINARY_FLOAT , atau BINARY_DOUBLE .
  • fmt adalah model format opsional yang menentukan bagaimana hasil harus diformat. Lihat elemen format angka yang valid yang dapat digunakan untuk menyusun model format Anda.
  • 'nlsparam' adalah argumen opsional yang menentukan bagaimana berbagai karakter dikembalikan. Anda dapat menggunakannya untuk menentukan karakter desimal dan pemisah grup, simbol mata uang lokal, dan simbol mata uang internasional. Jika argumen ini dihilangkan, maka nilai default untuk sesi saat ini akan digunakan.

Contoh

Berikut ini contoh untuk mendemonstrasikan cara kerja fungsi:

SELECT TO_CHAR(12345, '99G999') AS Result
FROM DUAL;

Hasil:

    RESULT 
__________ 
 12,345   

Argumen pertama adalah angka aktual yang kita format, dan argumen kedua adalah model format. Model format menentukan bagaimana nomor diformat.

Dalam hal ini, model format kami memformat angka dengan pemisah grup di posisi yang sesuai. Setiap digit numerik diwakili oleh 9 , dan pemisah grup diwakili oleh G .

Inilah yang terjadi jika kita mengubah model format sedikit:

SELECT TO_CHAR(12345, '099G999') AS Result
FROM DUAL;

Hasil:

     RESULT 
___________ 
 012,345    

Dalam hal ini, kami memulai model format dengan 0 karakter. Ini mengembalikan nol terkemuka di mana pun berlaku. 9 karakter tidak mengembalikan angka nol di depan.

Bahkan, kita bisa mengganti semua 9 s dengan 0 s jika kita mau. Berikut perbandingan yang menunjukkan bagaimana hasilnya bisa sangat berbeda, tergantung pada elemen format yang Anda gunakan:

SELECT 
    TO_CHAR(12, '000G000') AS "000G000",
    TO_CHAR(12, '999G999') AS "999G999"
FROM DUAL;

Hasil:

    000G000     999G999 
___________ ___________ 
 000,012          12    

Simbol Mata Uang

Anda dapat menggunakan L elemen format untuk mengembalikan simbol mata uang lokal.

Contoh:

SELECT TO_CHAR(12345, 'L99G999D99') AS Result
FROM DUAL;

Hasil:

                 RESULT 
_______________________ 
          $12,345.00   

Contoh ini menggunakan model format yang menampilkan hasil menggunakan simbol mata uang lokal (diwakili oleh L ), pemisah grup (diwakili oleh G ), karakter desimal (diwakili oleh D ), dan tentu saja, setiap digit angka (diwakili oleh 9 ).

Simbol mata uang lokal ditentukan oleh nilai saat ini dari NLS_CURRENCY parameter. Memang benar kita bisa menggunakan tanda dolar ($ ) untuk simbol mata uang, tetapi itu mengasumsikan bahwa mata uang tersebut didenominasi dalam dolar. Ada banyak kemungkinan mata uang lain di seluruh dunia, dan L elemen format dapat secara dinamis mengembalikan simbol mata uang lokal untuk sesi pengguna.

Lihat Cara Memeriksa Nilai Parameter NLS jika Anda perlu memeriksanya.

Lihat Daftar Lengkap Elemen Format Angka di Oracle untuk daftar elemen format yang dapat digunakan untuk memformat angka dengan fungsi ini.

Format Default

Jika Anda menghilangkan fmt argumen, nomor diubah menjadi VARCHAR2 nilai yang cukup panjang untuk menampung angka signifikannya.

Berikut ini contoh pengonversian angka tanpa menentukan formatnya:

SELECT TO_CHAR(525.45)
FROM DUAL;

Hasil:

525.45

'nlsparam' Argumen

 'nlsparam' argumen dapat digunakan untuk menentukan karakter desimal dan pemisah grup, simbol mata uang lokal, dan simbol mata uang internasional.

Bentuknya sebagai berikut:

'NLS_NUMERIC_CHARACTERS = ''dg''
   NLS_CURRENCY = ''text''
   NLS_ISO_CURRENCY = territory '

Contoh:

SELECT 
    TO_CHAR(
        1234.56, 
        'L99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

Hasil:

         €1.234,56

Ini dia lagi, tapi kali ini saya ganti L dengan C dalam model format:

SELECT 
    TO_CHAR(
        1234.56, 
        'C99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

Hasil:

      EUR1.234,56

C mengembalikan simbol mata uang ISO, yang dalam hal ini adalah EUR .

Cara Menekan Padding

Anda mungkin telah memperhatikan bahwa beberapa contoh memiliki padding yang diterapkan di sebelah kiri hasil. Padding tersebut dapat dihapus dengan fm pengubah format.

Contoh:

SELECT 
    TO_CHAR(
        1234.56, 
        'fmL99G999D99',
        'NLS_NUMERIC_CHARACTERS = '',.''
        NLS_CURRENCY = ''€''
        NLS_ISO_CURRENCY = Germany'
    )
FROM DUAL;

Hasil:

€1.234,56

Argumen Null

Melewati null menghasilkan null :

SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL;

Hasil:

null

Secara default, SQLcl dan SQL*Plus mengembalikan ruang kosong setiap kali null terjadi sebagai akibat dari SQL SELECT penyataan.

Namun, Anda dapat menggunakan SET NULL untuk menentukan string berbeda yang akan dikembalikan. Di sini saya menetapkan bahwa string null harus dikembalikan.

Argumen Tidak Ada

Memanggil fungsi tanpa meneruskan argumen apa pun, menghasilkan kesalahan:

SELECT TO_CHAR()
FROM DUAL;

Hasil:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"

Melewati terlalu banyak argumen juga menyebabkan kesalahan:

SELECT TO_CHAR(123, '99', 'NLS_ISO_CURRENCY = GERMANY', 'oops!' )
FROM DUAL;

Hasil:

SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah mungkin menjalankan skrip SQLPLUS pada file yang dikodekan sebagai UTF-8 dengan BOM

  2. Apakah Oracle menggunakan evaluasi hubung singkat?

  3. FROM_TZ() Fungsi di Oracle

  4. Bagaimana cara mengekstrak hanya nilai tanggal dari bidang tanggal di Oracle?

  5. Cara memanggil metode super objek Oracle PL/SQL