Saat bekerja dengan Postgres, Anda dapat menggunakan to_char()
berfungsi untuk menampilkan angka dalam format tertentu.
Cara kerjanya adalah Anda memberikan dua argumen. Argumen pertama adalah nomor yang akan diformat. Argumen kedua menentukan bagaimana formatnya.
Nilai yang dikembalikan adalah teks .
Bergantung pada kebutuhan Anda, Anda mungkin lebih suka mengonversi nomor ke tipe data yang sesuai, misalnya menggunakan cast()
fungsi.
Contoh kedua metode di bawah ini.
Contoh
Berikut adalah contoh dasar untuk didemonstrasikan.
SELECT to_char(10, '99.99');
Hasil:
10.00
9
s sebenarnya memiliki arti khusus dalam konteks ini. Karakter ini adalah salah satu pola template yang valid yang terdiri dari string format Anda saat memformat angka.
Dalam kasus 9
, ini menentukan posisi digit, tetapi jika itu adalah nol di depan maka akan diganti dengan spasi, sedangkan jika itu adalah nol di belakang dan mode pengisian ditentukan maka itu akan dihapus.
Jika saya menghapus bagian desimal dan pecahan detik, saya mendapatkan hasil yang berbeda.
SELECT to_char(10, '99');
Hasil:
10
Lepaskan Angka Nol Terdepan
Anda dapat mengganti 9
dengan 0
jika Anda ingin menekan angka nol di depan dan di belakang, meskipun tidak signifikan.
Berikut adalah contoh yang menunjukkan perbedaan antara keduanya.
SELECT
to_char(0010, '9999') AS "9999",
to_char(0010, '0000') AS "0000";
Hasil:
9999 | 0000 -------+------- 10 | 0010
Pola Template
Seperti yang terlihat pada contoh sebelumnya, format string terdiri dari satu atau lebih pola template.
Misalnya, 9999
adalah format string yang terdiri dari empat pola template – masing-masing adalah 9
.
Tempat desimal adalah pola template lain.
Saya bisa menggunakan D
bukannya tempat desimal. Itu menggunakan lokal saat ini untuk pemformatan sebenarnya.
SELECT
to_char(10, '99.99') AS "99.99",
to_char(10, '99D99') AS "99D99";
Hasil:
99.99 | 99D99 --------+-------- 10.00 | 10.00
Untuk daftar lengkap pola dan pengubah template, lihat Pola &Pengubah Template untuk Pemformatan Numerik di Postgres.
Pengubah Pola Template
Ada juga beberapa pengubah yang dapat digunakan bersama dengan pola template. Ini mengubah cara output diformat, tergantung pada pengubah yang digunakan.
Secara khusus, ada tiga pengubah yang dapat digunakan dengan pemformatan numerik.
Pengubah | Deskripsi |
---|---|
FM awalan | mode isi (menekan angka nol yang tertinggal dan mengisi kosong) |
TH akhiran | akhiran nomor urut huruf besar |
th akhiran | akhiran angka urut huruf kecil |
Perhatikan bahwa yang pertama ditambahkan sebagai awalan pada pola templat dan dua lainnya ditambahkan sebagai akhiran.
Bilangan Ordinal
Persyaratan umum adalah mengubah angka menjadi ordinalnya. Kita dapat menggunakan TH
atau th
untuk itu, tergantung kita mau sufiksnya huruf besar atau kecil.
Ini contohnya.
SELECT to_char(03, 'FM99th');
Hasil:
3rd
Dalam hal ini saya juga menggunakan FM
untuk menekan titik kosong dan angka nol yang tertinggal.
Berikut perbandingan antara menggunakan FM
dan menghilangkannya:
SELECT
to_char(03, '99th') AS "99th",
to_char(03, 'FM99th') AS "FM99th";
Hasil:
99th | FM99th -------+-------- 3rd | 3rd
Jika Anda perhatikan dengan seksama, kolom pertama memiliki bagian depan yang kosong, sedangkan kolom kedua tidak.
Mata Uang
Persyaratan umum lainnya adalah menampilkan angka dalam mata uang tertentu.
Dalam hal ini, kita dapat menggunakan L
pola template untuk menampilkan simbol mata uang lokal.
SELECT to_char(03, 'LFM99D00');
Hasil:
$3.00
Nomor yang Ditandatangani
Ada juga pola template untuk nomor yang ditandatangani.
Ini contohnya.
SELECT to_char(27, 'S99');
Hasil:
+27
Di sini, saya menggunakan S
untuk menambahkan tanda sadar-lokal yang ditambatkan ke nomor tersebut.
Dalam hal ini adalah angka positif. Berikut contoh lain yang menggunakan nilai negatif.
SELECT to_char(-27, 'S99');
Hasil:
-27
Ada beberapa pola templat lain yang dapat digunakan untuk nomor bertanda.
Sebagai contoh, lihat Menambahkan Tanda Plus/Minus ke Angka di Postgres.
Dan seperti yang disebutkan, lihat Pola &Pengubah Template untuk Pemformatan Numerik di Postgres untuk daftar lengkap pengubah template yang dapat Anda gunakan saat memformat angka.
Jenis Data
Seperti disebutkan, to_char()
fungsi menampilkan hasilnya sebagai teks .
Bergantung pada kebutuhan Anda, Anda mungkin merasa lebih baik untuk mengonversi nomor ke tipe data yang lebih sesuai.
Berikut adalah contoh yang mengonversi angka menjadi data uang ketik.
SELECT cast(10 as money);
Hasil:
$10.00