Oracle Database menyediakan TO_CHAR(number)
fungsi yang memungkinkan Anda memformat angka berdasarkan model format tertentu. Ada tiga elemen format yang dapat Anda gunakan dengan TO_CHAR()
berfungsi untuk mengembalikan nilai sebagai mata uang.
Elemen Format Mata Uang
Elemen format mata uang adalah L
, C
, dan U
.
C | Mengembalikan simbol mata uang ISO (nilai saat ini dari NLS_ISO_CURRENCY parameter). |
L | Mengembalikan simbol mata uang lokal (nilai saat ini dari NLS_CURRENCY parameter). |
U | Mengembalikan simbol mata uang ganda Euro (atau lainnya), ditentukan oleh nilai saat ini dari NLS_DUAL_CURRENCY parameter. |
Model format ini memungkinkan Anda untuk menampilkan tanda mata uang berdasarkan pengaturan mata uang/wilayah Anda, daripada harus memberikan simbol mata uang tetap.
Meskipun benar bahwa Anda dapat memberikan string literal untuk mata uang (misalnya, tanda dolar ($
) untuk dolar), ini mengasumsikan bahwa mata uang tersebut didenominasi dalam nilai hardcoded tersebut. Ada banyak kemungkinan mata uang lain di seluruh dunia, dan elemen format dapat secara dinamis mengembalikan simbol mata uang lokal untuk sesi pengguna.
Contoh
Berikut ini contoh untuk didemonstrasikan:
ALTER SESSION SET NLS_TERRITORY = 'Australia';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Hasil:
r1 r3 r3 _____________ _______________ _____________ $12,345.00 AUD12,345.00 $12,345.00
Satu-satunya perbedaan antara ketiga kolom ini adalah elemen format mata uang. Yang pertama menggunakan L
, yang kedua menggunakan C
, dan yang ketiga menggunakan U
.
Mereka semua menggunakan fm
pengubah format untuk menekan padding apa pun. Mereka juga menggunakan 9
dan 0
format elemen untuk menampilkan angka (0
elemen termasuk nol di depan/di belakang). Mereka juga menyertakan pemisah grup (diwakili oleh G
), karakter desimal (diwakili oleh D
).
Mata Uang Ganda
Pada contoh di atas, saya mengatur NLS_TERRITORY
ke Australia
. Hal ini mengakibatkan simbol mata uang yang sama dikembalikan dalam dua dari tiga kolom (yaitu r1
dan r3
kolom).
Dalam contoh berikut, saya menggunakan wilayah yang berbeda:
ALTER SESSION SET NLS_TERRITORY = 'Denmark';
SELECT
TO_CHAR(12345, 'fmL99G999D00') AS "r1",
TO_CHAR(12345, 'fmC99G999D00') AS "r3",
TO_CHAR(12345, 'fmU99G999D00') AS "r3"
FROM DUAL;
Hasil:
r1 r3 r3 ______________ _______________ _____________ kr12.345,00 DKK12.345,00 €12.345,00
Kali ini kita mendapatkan simbol mata uang yang berbeda untuk setiap r1
dan r3
kolom.
Lihat Cara Memeriksa Nilai Parameter NLS jika Anda perlu memeriksanya.
'nlsparam'
Argumen
Saat menggunakan TO_CHAR()
fungsi, '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,
'fmL99G999D99',
'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,
'fmC99G999D99',
'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
.
Lihat Daftar Lengkap Elemen Format Angka di Oracle untuk daftar elemen format yang dapat digunakan untuk memformat angka dengan TO_CHAR()
fungsi.