Sebagian besar RDBMS utama menyediakan cara bagi kita untuk memformat angka menggunakan SQL. Beberapa hanya menyediakan kemampuan pemformatan dasar, sementara yang lain lebih canggih.
Di bawah ini adalah contoh pemformatan angka di beberapa RDBMS yang lebih populer.
MySQL
Di MySQL, kita bisa menggunakan FORMAT()
berfungsi untuk memformat angka ke format tertentu. Fungsi ini menerima tiga parameter; nomor, jumlah tempat desimal, dan lokal opsional:
SELECT FORMAT(123456.789, 2);
Hasil:
123,456.79
Seperti yang disebutkan, Anda juga dapat meneruskan argumen ketiga untuk menentukan lokal yang akan digunakan untuk pola pemformatan. Lihat Cara Memformat Angka di MySQL sebagai contoh.
Untuk memformat angka sebagai mata uang, lihat Cara Memformat Angka sebagai Mata Uang di MySQL.
Oracle
Oracle Database memberi kami sejumlah opsi dalam hal memformat angka.
Khususnya, TO_CHAR(number)
fungsi memungkinkan kita untuk memformat angka berdasarkan model format kustom kita sendiri.
Contoh:
SELECT
TO_CHAR(12345, 'fmL99G999D00')
FROM DUAL;
Hasil:
$12,345.00
Argumen pertama adalah nomor yang akan diformat, dan argumen kedua adalah model format. Model format terdiri dari satu atau lebih elemen format, yang masing-masing mewakili elemen berbeda dalam output yang diformat.
Dalam contoh di atas, kami menggunakan penggunaan 9
karakter untuk mewakili setiap digit, dan 0
karakter untuk menampilkan digit atau nol (tergantung pada ada atau tidaknya digit di posisi itu). Kami juga menggunakan G
untuk pemisah grup sadar lokal dan D
untuk pemisah desimal yang sadar lokal. fm
elemen menekan bantalan awal atau akhir yang mungkin diterapkan pada hasil.
Berikut adalah daftar lengkap elemen format yang dapat Anda gunakan untuk model format saat memformat angka.
Ada cara lain untuk memformat angka di Oracle. Misalnya, LPAD()
fungsi dapat digunakan untuk mengonversi angka menjadi string dan memformatnya persis seperti yang Anda suka dengan cepat. Fungsi seperti CAST()
juga dapat memengaruhi cara angka diformat, bergantung pada tipe data yang digunakan untuk mentransmisikannya.
Lihat Cara Memformat Angka di Oracle untuk detail lebih lanjut, dan contoh.
PostgreSQL
Seperti Oracle, PostgreSQL juga memiliki TO_CHAR()
fungsi, dan cara kerjanya hampir sama:
SELECT TO_CHAR(923, 'fm000G000th');
Hasil:
000,923rd
Di sini, saya menggunakan 0
format elemen untuk menghasilkan nol di depan, bahkan ketika nomor aslinya tidak memiliki digit di tempat itu. Dalam hal ini, saya menggunakan th
format elemen untuk mengonversi angka ke ordinalnya. Saya juga menggunakan G
untuk pemisah grup sadar lokal.
Berikut adalah daftar pola template yang terdiri dari string format saat memformat angka, serta pengubah format.
Cara lain untuk memformat angka di PostgreSQL adalah dengan mengubahnya menjadi money
tipe data. Nomor yang disimpan sebagai money
jenis dikeluarkan dalam format yang sadar lokal, dengan simbol mata uang yang sesuai, pemisah grup, pemisah desimal, dll:
SELECT CAST(10000 as money);
Hasil:
$10,000.00
Lihat Cara Memformat Angka di PostgreSQL untuk lebih banyak contoh pemformatan angka di PostgreSQL.
SQL Server
SQL Server memiliki FORMAT()
fungsi, yang bekerja sangat mirip dengan TO_CHAR()
Oracle dan PostgreSQL fungsi, yang memungkinkan Anda untuk memformat angka berdasarkan string format:
SELECT
FORMAT(123456.789, 'N') AS "Number",
FORMAT(123456.789, 'P') AS "Percent",
FORMAT(123456.789, 'C') AS "Currency";
Hasil:
+------------+----------------+-------------+ | Number | Percent | Currency | |------------+----------------+-------------| | 123,456.79 | 12,345,678.90% | $123,456.79 | +------------+----------------+-------------+
Contoh ini menunjukkan tiga penentu format standar – yang masing-masing menampilkan nomor dalam format tertentu.
Kami juga dapat menggunakan penentu format kustom kami sendiri, yang memungkinkan kami untuk membuat format kami sendiri, jika format standar tidak seperti yang kami inginkan.
Anda juga dapat melakukan hal-hal seperti, memformat angka dalam persamaan heksadesimalnya, atau menggunakan notasi eksponensial, dll.
Dan Anda dapat meneruskan argumen ketiga opsional untuk menentukan lokal yang akan digunakan untuk memformat angka (itu memformat angka menggunakan konvensi lokal tersebut).
Lihat Cara Memformat Angka di SQL Server untuk contoh lainnya.
MariaDB
Seperti MySQL, MariaDB memiliki a FORMAT()
fungsi, yang menyediakan pemformatan angka dasar.
Berikut adalah contoh penggunaan fungsi ini untuk memformat angka menggunakan lokal yang berbeda:
SELECT
FORMAT(123456.789, 2, 'ta_IN') AS "Tamil, India",
FORMAT(123456.789, 2, 'de_DE') AS "German, Germany",
FORMAT(123456.789, 2, 'zh_HK') AS "Chinese, Hong Kong";
Hasil:
+--------------+-----------------+--------------------+ | Tamil, India | German, Germany | Chinese, Hong Kong | +--------------+-----------------+--------------------+ | 1,23,456.79 | 123.456,79 | 123,456.79 | +--------------+-----------------+--------------------+
Lihat Cara Memformat Angka di MariaDB untuk contoh lainnya.
SQLite
SQLite lebih terbatas daripada DBMS lain dalam hal memformat angka. Namun, ada beberapa cara untuk mendapatkan beberapa pemformatan angka dasar:
SELECT PRINTF("%,d", 123456789);
Hasil:
123,456,789
PRINTF()
fungsi dapat menampilkan pemisah grup untuk bilangan bulat, tetapi tidak untuk bilangan real/floating point. Untuk memformat bilangan real/floating point, Anda perlu melakukan lebih banyak pekerjaan. Lihat Memformat Angka dengan Koma di SQLite untuk contoh yang saya maksud.
Perbarui :SQLite 3.38.0 (dirilis 22 Feb 2022) berganti nama menjadi PRINTF()
berfungsi untuk FORMAT()
. PRINTF()
asli nama dipertahankan sebagai alias untuk kompatibilitas mundur.
Jadi contoh di atas bisa diubah menjadi ini:
SELECT FORMAT("%,d", 123456789);
Hasil:
123,456,789