Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Memformat Angka di SQL Server

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara terbaik untuk menyisipkan basis data massal dari c #?

  2. Cara Mengonversi Huruf Kecil ke Huruf Besar di SQL Server – UPPER ()

  3. Haruskah saya menggunakan kolom varchar(max) sebaris atau menyimpannya di tabel terpisah?

  4. Hasilkan nilai DISTINCT di STRING_AGG

  5. Pos Pemeriksaan Basis Data di SQL Server