Mulai dari SQL Server 2012, Anda dapat memformat tipe numerik menggunakan T-SQL FORMAT()
fungsi. Fungsi ini menerima tiga argumen; nomor, format, dan argumen “budaya” opsional.
Ini mengembalikan string berformat tipe nvarchar .
Format disediakan sebagai string format. String format menentukan bagaimana output harus diformat.
Ini contohnya:
SELECT FORMAT(1, 'N');
Hasil:
1.00
Dalam hal ini, saya menggunakan N
sebagai argumen kedua. Ini adalah penentu format numerik standar untuk Number. Penentu format khusus ini (N
) menghasilkan keluaran yang diformat dengan angka integral dan desimal, pemisah grup, dan pemisah desimal dengan tanda negatif opsional. Argumen ini tidak peka huruf besar/kecil, jadi N
atau n
baik-baik saja.
Tempat Desimal
Ini contoh lain, kali ini menggunakan N1
untuk menentukan bahwa kita hanya menginginkan satu tempat desimal:
SELECT FORMAT(1, 'N1');
Hasil:
1.0
Tetapi Anda juga dapat menambah jumlah tempat desimal juga:
SELECT FORMAT(1, 'N7');
Hasil:
1.0000000
Dalam contoh ini, 1
dan 7
dikenal sebagai penentu presisi .
Penentu presisi adalah opsional. Mereka dapat berupa nilai dari 0 hingga 99, yang menentukan ketepatan hasil. Cara kerjanya tergantung pada penentu format yang digunakan. Untuk beberapa penentu format, ini akan menentukan jumlah total digit dalam hasil, untuk yang lain akan menentukan jumlah tempat desimal. Dalam kasus lain, itu akan diabaikan sama sekali. Lihat daftar lengkap penentu Format Numerik Standar untuk melihat bagaimana penentu presisi memengaruhi output dari setiap penentu format.
Persen
Contoh berikut menggunakan P
argumen, yang memformat angka sebagai nilai persentase. Ini mengalikan angka dengan 100, lalu menambahkan tanda persen yang dilokalkan.
SELECT FORMAT(1, 'P') AS 'Example 1', FORMAT(.375, 'P') AS 'Example 2', FORMAT(.0375, 'P', 'tr-tr') AS 'Example 3';
Hasil:
Example 1 Example 2 Example 3 --------- --------- --------- 100.00 % 37.50 % %3,75
Perhatikan bahwa "Contoh 3" menyertakan argumen ketiga, yang menentukan budaya yang akan digunakan dalam output. Dalam hal ini, saya menggunakan tr-tr
untuk Turki. Ini menghasilkan tanda persen yang ditambahkan ke nomor (bukan ditambahkan, seperti yang lain). Ini juga menghasilkan koma yang digunakan sebagai pemisah desimal.
Jika Anda tidak memberikan argumen "budaya", bahasa sesi saat ini akan digunakan.
Seperti yang Anda bayangkan, Anda bisa mendapatkan hasil yang sangat berbeda tergantung pada bahasa Anda saat ini atau nilai argumen "budaya" apa pun. Lihat Bagaimana Pengaturan Bahasa dapat Mempengaruhi Hasil FORMAT() Anda untuk contoh lainnya.
Mata Uang
Anda dapat menggunakan C
untuk mengembalikan nilai mata uang.
SELECT FORMAT(1, 'C');
Hasil:
$1.00
Anda juga dapat menambahkan lokal sebagai parameter ketiga.
Berikut beberapa contohnya:
SELECT FORMAT(1, 'C', 'fr-FR') AS France, FORMAT(1, 'C', 'th-TH') AS Thailand, FORMAT(1, 'C', 'ja-JP') AS Japan;
Hasil:
France Thailand Japan ------ -------- ----- 1,00 € ฿1.00 ¥1
Eksponensial (Ilmiah)
Anda dapat menggunakan E
untuk menentukan notasi eksponensial.
SELECT FORMAT(1234.56789, 'E');
Hasil:
1.234568E+003
Heksadesimal
Anda bahkan dapat memformat angka sebagai heksadesimal. Untuk melakukannya, gunakan X
argumen:
SELECT FORMAT(10, 'X');
Hasil:
A
Heksadesimal adalah basis 16. Oleh karena itu, hitungannya menjadi 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F sebelum memulai lagi (misalnya 10 dalam heksadesimal adalah setara dari 16 dalam desimal, dan 11 setara dengan 17, dll). Itu sebabnya contoh di sini menghasilkan A
, karena dalam heksadesimal, A
muncul setelah 9
.
Berikut contoh lain, kali ini dengan jumlah yang lebih besar:
SELECT FORMAT(7145, 'X');
Hasil:
1BE9
Format Khusus
Anda juga dapat membuat format kustom Anda sendiri dengan menggunakan string format numerik kustom. Ini terdiri dari serangkaian penentu format numerik khusus yang menyediakan pola untuk nomor Anda.
Ini lebih mudah dijelaskan dengan sebuah contoh:
SELECT FORMAT(123456789, '##-###-####');
Hasil:
12-345-6789
Dalam hal ini, saya menggunakan digit placeholder (#
). Placeholder digit memungkinkan saya untuk menentukan format nomor, menggunakan #
simbol sebagai pengganti untuk setiap nomor.
Koma
Contoh lain:
SELECT FORMAT(123456789, '#,#');
Hasil:
123,456,789
Nol Terdepan
Penentu format numerik khusus lainnya adalah nol (0
). Anda dapat menggunakan ini untuk mengisi angka dengan nol di depan:
SELECT FORMAT(7, '000') AS 'Example 1', FORMAT(123, '0000') AS 'Example 2', FORMAT(123, '00000') AS 'Example 3';
Hasil:
Example 1 Example 2 Example 3 --------- --------- --------- 007 0123 00123
Anda juga dapat menggunakannya untuk menghapus angka nol:
SELECT FORMAT(0123, '000') AS 'Example 1', FORMAT(0123, '0000') AS 'Example 2', FORMAT(000123, '00000') AS 'Example 3';
Hasil:
Example 1 Example 2 Example 3 --------- --------- --------- 123 0123 00123
Referensi Penentu Format Numerik
Artikel berikut berisi semua penentu format numerik yang dapat Anda gunakan dengan FORMAT()
fungsi, bersama dengan contoh T-SQL.
- String Format Numerik Standar
- String Format Numerik Kustom
Ini adalah penentu format yang sama yang didukung oleh .NET Framework (FORMAT()
fungsi bergantung pada .NET Framework).
Tanggal dan Waktu
FORMAT()
fungsi juga memungkinkan Anda untuk memformat tanggal dan waktu.
Tanggal dan waktu memiliki seperangkat penentu format yang terpisah:
- String Format Tanggal dan Waktu Standar
- String Format Tanggal dan Waktu Khusus