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

String Format Numerik Kustom Didukung oleh FORMAT() di SQL Server

Artikel ini memberikan referensi untuk penentu format numerik khusus yang dapat digunakan saat memformat angka menggunakan FORMAT() fungsi di SQL Server. Contoh disertakan.

Format String Deskripsi/Contoh
0

Nol placeholder . Mengganti angka nol dengan angka yang sesuai jika ada; jika tidak, nol akan muncul di string hasil.

Contoh :

SELECT 
  FORMAT(12.34, '0') R1,
  FORMAT(012.34, '00') R2,
  FORMAT(12.34, '000') R3,
  FORMAT(012.34, '0000') R4,
  FORMAT(12.54, '00') R5;
+------+------+------+------+------+
| R1   | R2   | R3   | R4   | R5   |
|------+------+------+------+------|
| 12   | 12   | 012  | 0012 | 13   |
+------+------+------+------+------+
#

Tempat penampung digit . Mengganti simbol “#” dengan digit yang sesuai jika ada; jika tidak, tidak ada digit yang muncul di string hasil.

Tidak ada digit yang muncul dalam string hasil jika digit yang sesuai dalam string input adalah 0 yang tidak signifikan.

Contoh :

SELECT 
  FORMAT(12.34, '#') R1,
  FORMAT(012.34, '##') R2,
  FORMAT(12.34, '###') R3,
  FORMAT(012.34, '####') R4,
  FORMAT(12.54, '##') R5;
+------+------+------+------+------+
| R1   | R2   | R3   | R4   | R5   |
|------+------+------+------+------|
| 12   | 12   | 12   | 12   | 13   |
+------+------+------+------+------+
.

Titik desimal . Menentukan lokasi pemisah desimal dalam string hasil.

Contoh :

SELECT 
  FORMAT(12.34, '0.0', 'en-US') R1,
  FORMAT(12.34, '.00', 'en-US') R2,
  FORMAT(12.34, '.', 'en-US') R3,
  FORMAT(12.34, '.00', 'fr-FR') R4;
+------+-------+------+-------+
| R1   | R2    | R3   | R4    |
|------+-------+------+-------|
| 12.3 | 12.34 | 12   | 12,34 |
+------+-------+------+-------+
,

Pemisah grup dan penskalaan angka . Dapat digunakan sebagai pemisah grup (juga dikenal sebagai pemisah seribu) dan penentu penskalaan angka.

  • Sebagai pemisah grup , ia menyisipkan karakter pemisah grup yang dilokalkan di antara setiap grup.
  • Sebagai penentu skala angka , ini membagi angka dengan 1000 untuk setiap koma yang ditentukan.

Untuk menentukan pemisah grup, tempatkan satu koma atau lebih di antara dua digit placeholder (0 atau #) yang memformat digit integral dari suatu angka. Ini menghasilkan karakter pemisah grup yang disisipkan di antara setiap grup angka di bagian integral dari output.

Untuk menentukan penentu penskalaan angka, tempatkan satu koma atau lebih tepat di sebelah kiri titik desimal eksplisit atau implisit.

Contoh – Sebagai Pemisah Grup :

SELECT 
  FORMAT(12345678, '#,#', 'en-US') 'US English',
  FORMAT(12345678, '#,#', 'fr-FR') 'French',
  FORMAT(12345678, '#,#', 'es-ES') 'Spanish';
+--------------+------------+------------+
| US English   | French     | Spanish    |
|--------------+------------+------------|
| 12,345,678   | 12 345 678 | 12.345.678 |
+--------------+------------+------------+

Contoh – Sebagai Penentu Penskalaan Angka :

SELECT 
  FORMAT(12000, '#,', 'en-US') 'R1',
  FORMAT(1234567890, '#,', 'en-US') R2,
  FORMAT(1234567890, '#,,', 'en-US') R3;
+------+---------+------+
| R1   | R2      | R3   |
|------+---------+------|
| 12   | 1234568 | 1235 |
+------+---------+------+

Contoh – Sebagai Keduanya :

SELECT 
  FORMAT(1234567890, '#,#,', 'en-US') R1,
  FORMAT(1234567890, '#,#,,', 'en-US') R2;
+-----------+-------+
| R1        | R2    |
|-----------+-------|
| 1,234,568 | 1,235 |
+-----------+-------+
%

Penampung persentase . Mengalikan angka dengan 100 dan menyisipkan simbol persentase lokal dalam string hasil.

Contoh :

SELECT 
  FORMAT(0.1234, '#.# %', 'en-US') R1,
  FORMAT(0.1235, '#.#%', 'zh-cn') R2,
  FORMAT(0.125, '#. %', 'en-US') R3,
  FORMAT(0.1234, '%#.00,', 'tr') R4,
  FORMAT(0.1234, '#.#%', 'it') R5;
+--------+-------+------+--------+-------+
| R1     | R2    | R3   | R4     | R5    |
|--------+-------+------+--------+-------|
| 12.3 % | 12.4% | 13 % | %12,34 | 12,3% |
+--------+-------+------+--------+-------+

Tempat penampung per seribu . Mengalikan angka dengan 1000 dan menyisipkan simbol per seribu yang dilokalkan ke dalam string hasil.

Contoh :

SELECT 
  FORMAT(0.01234, '#.# ‰', 'en-US') 'R1',
  FORMAT(0.01235, '#.# ‰', 'en-US') R2,
  FORMAT(0.0125, '#. ‰', 'en-US') R3,
  FORMAT(0.01234, '#.# ‰', 'fr-FR') R4;
+--------+--------+------+--------+
| R1     | R2     | R3   | R4     |
|--------+--------+------+--------|
| 12.3 ‰ | 12.4 ‰ | 13 ‰ | 12,3 ‰ |
+--------+--------+------+--------+

E0
E+0
E-0
e0
e+0
e-0

Notasi eksponensial . Jika diikuti oleh setidaknya satu nol (0 ), memformat hasil menggunakan notasi eksponensial. Kasus (E atau e ) menunjukkan kasus simbol eksponen dalam string hasil. Jumlah nol setelah E atau e karakter menentukan jumlah minimum digit dalam eksponen. Tanda plus (+ ) menunjukkan bahwa karakter tanda selalu mendahului eksponen. Tanda minus (- ) menunjukkan bahwa karakter tanda hanya mendahului eksponen negatif.

Contoh :

SELECT 
  FORMAT(123456789, '0e0') R1,
  FORMAT(123456789, '0e+0') R2,
  FORMAT(123456789, '0E+00') R3,
  FORMAT(1234.56789, '0.0##e+00') R4,
  FORMAT(12.3456789-12, '0e-0') R5;
+------+------+-------+-----------+------+
| R1   | R2   | R3    | R4        | R5   |
|------+------+-------+-----------+------|
| 1e8  | 1e+8 | 1E+08 | 1.235e+03 | 3e-1 |
+------+------+-------+-----------+------+

\

Karakter pelarian . Menyebabkan karakter berikutnya ditafsirkan sebagai literal, bukan sebagai penentu format khusus.

Contoh :

SELECT FORMAT(123, '\#0000') Result;
+----------+
| Result   |
|----------|
| #0123    |
+----------+

'string'
"string"

Pembatas string literal . Menunjukkan bahwa karakter terlampir harus disalin ke string hasil tidak berubah.

Contoh :

SELECT FORMAT(23, '## Degrees') Result;
+------------+
| Result     |
|------------|
| 23 Degrees |
+------------+

;

Pemisah bagian . Ini adalah penentu format bersyarat yang mendefinisikan bagian dengan string format terpisah untuk angka positif, negatif, dan nol. Ini memungkinkan Anda untuk menerapkan pemformatan yang berbeda ke angka bergantung pada apakah nilainya positif, negatif, atau nol. String format khusus dapat berisi hingga tiga bagian yang dipisahkan oleh titik koma.

  • Satu bagian :Format string berlaku untuk semua nilai (seperti contoh sebelumnya).
  • Dua bagian :Bagian pertama berlaku untuk nilai positif dan nol, dan bagian kedua berlaku untuk nilai negatif.

    Jika angka yang akan diformat negatif, tetapi menjadi nol setelah dibulatkan sesuai dengan format pada bagian kedua, maka angka nol yang dihasilkan diformat sesuai dengan bagian pertama.

  • Tiga bagian :Bagian pertama berlaku untuk nilai positif, bagian kedua berlaku untuk nilai negatif, dan bagian ketiga berlaku untuk nol.

    Bagian kedua dapat dibiarkan kosong (dengan tidak memiliki apa pun di antara titik koma), dalam hal ini bagian pertama berlaku untuk semua nilai bukan nol.

    Jika angka yang akan diformat bukan nol, tetapi menjadi nol setelah dibulatkan sesuai dengan format di bagian pertama atau kedua, hasil nol diformat sesuai dengan bagian ketiga.

Perhatikan bahwa nilai negatif selalu ditampilkan tanpa tanda minus saat pemisah bagian digunakan. Jika Anda ingin nilai akhir yang diformat memiliki tanda minus, Anda harus secara eksplisit menyertakan tanda minus sebagai bagian dari string format kustom. Ini juga berlaku untuk pemformatan lain yang sudah ada sebelumnya yang terkait dengan angka.

Contoh – Satu Bagian (tidak ada pemisah bagian)
Ini adalah format string khas yang terdiri dari satu bagian (seperti pada contoh sebelumnya). Oleh karena itu, tidak ada pemisah pemisah yang digunakan.

SELECT 
  FORMAT(123, '0 (Number)') Positive,
  FORMAT(-123, '0 (Number)') Negative,
  FORMAT(0, '0 (Number)') Zero;
+--------------+---------------+------------+
| Positive     | Negative      | Zero       |
|--------------+---------------+------------|
| 123 (Number) | -123 (Number) | 0 (Number) |
+--------------+---------------+------------+

Perhatikan bahwa tanda minus tetap utuh, karena saya tidak menggunakan pemisah bagian apa pun.

Contoh – Dua Bagian :

/* EXAMPLE 1 - Same format string, different values */
SELECT 
  FORMAT(123,  '0 (Positive or Zero); 0 (Negative)') Positive,
  FORMAT(-123, '0 (Positive or Zero); 0 (Negative)') Negative,
  FORMAT(0,    '0 (Positive or Zero); 0 (Negative)') Zero;
+------------------------+-----------------+----------------------+
| Positive               | Negative        | Zero                 |
|------------------------+-----------------+----------------------|
| 123 (Positive or Zero) |  123 (Negative) | 0 (Positive or Zero) |
+------------------------+-----------------+----------------------+

/* EXAMPLE 2 - Rounding. 
Negative values rounded to zero get 
formatted under the first format string. 
*/
SELECT 
  FORMAT(0.1,  '0 (Positive or Zero); 0 (Negative)') Positive,
  FORMAT(-0.1, '0 (Positive or Zero); 0 (Negative)') Negative;
+----------------------+----------------------+
| Positive             | Negative             |
|----------------------+----------------------|
| 0 (Positive or Zero) | 0 (Positive or Zero) |
+----------------------+----------------------+

Contoh – Tiga Bagian :

/* EXAMPLE 1 - Basic Usage */
SELECT FORMAT(123, '0 (Positive); 0 (Negative); 0 (Zero)') Result;
+----------------+
| Result         |
|----------------|
| 123 (Positive) |
+----------------+

/* EXAMPLE 2 - Same format string, different values */
SELECT 
  FORMAT(123,   '0 (Positive); 0 (Negative); 0 (Zero)') 'Positive',
  FORMAT(-123,  '0 (Positive); 0 (Negative); 0 (Zero)') 'Negative',
  FORMAT(0,     '0 (Positive); 0 (Negative); 0 (Zero)') 'Zero',
  FORMAT(0.123, '0 (Positive); 0 (Negative); 0 (Zero)') 'Rounded to Zero';

+----------------+----------------+-----------+-------------------+
| Positive       | Negative       | Zero      | Rounded to Zero   |
|----------------+----------------+-----------+-------------------|
| 123 (Positive) | 123 (Negative) |  0 (Zero) |  0 (Zero)         |
+----------------+----------------+-----------+-------------------+

/* EXAMPLE 3 - Second format string is empty */
SELECT 
  FORMAT(123,   '0 (Positive);; 0 (Zero)') 'Positive',
  FORMAT(-123,  '0 (Positive);; 0 (Zero)') 'Negative',
  FORMAT(0,     '0 (Positive);; 0 (Zero)') 'Zero',
  FORMAT(0.123, '0 (Positive);; 0 (Zero)') 'Rounded to Zero';
+----------------+-----------------+-----------+-------------------+
| Positive       | Negative        | Zero      | Rounded to Zero   |
|----------------+-----------------+-----------+-------------------|
| 123 (Positive) | -123 (Positive) |  0 (Zero) |  0 (Zero)         |
+----------------+-----------------+-----------+-------------------+
Lainnya

Semua karakter lainnya. Karakter disalin ke string hasil tidak berubah.

Contoh :

SELECT FORMAT(12, '# °C') Result;
+----------+
| Result   |
|----------|
| 12 °C    |
+----------+

Daftar di atas adalah daftar lengkap string format kustom .NET yang valid, berdasarkan informasi dari dokumentasi resmi .NET untuk String Format Kustom di situs web Microsoft pada saat penulisan.

Alasan ini relevan dengan SQL Server FORMAT() fungsinya adalah hanya menerima string format .NET Framework yang valid.

Selain kebiasaan di atas format string, Anda juga dapat menggunakan standar memformat string. Berikut adalah daftar lengkap String Format Numerik Standar yang dapat Anda gunakan dengan SQL Server.

Anda juga dapat memformat nilai tanggal dan waktu. Lihat daftar String Format Tanggal dan Waktu Standar serta String Format Tanggal dan Waktu Kustom yang dapat Anda gunakan dengan FORMAT() fungsi.

Jika Anda masih mencoba memahami apa itu format string, lihat Apa itu Format String di SQL Server? untuk pemahaman dasar tentang format string dan bagaimana mereka berhubungan dengan FORMAT() fungsi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PERIKSA Batasan di SQL Server

  2. Bagaimana menerapkan Memiliki Klausa dengan Grup dengan di Select Query - Tutorial SQL Server / TSQL Bagian 131

  3. Perbedaan Antara Tabel Sementara Lokal dan Global di SQL Server

  4. Reset AutoIncrement di SQL Server setelah Hapus

  5. Cara memilih tanggal tanpa waktu di SQL