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

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

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

Beberapa contoh menggunakan penentu presisi (ini terdiri dari satu atau dua digit yang ditambahkan ke penentu format). Penentu presisi 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, ini akan diabaikan sama sekali.

Format String Deskripsi/Contoh
C atau c

Mata Uang . Mengonversi angka menjadi string yang mewakili jumlah mata uang.

Penentu presisi opsional dapat digunakan untuk menentukan jumlah tempat desimal.

Contoh (menggunakan berbagai budaya) :

SELECT 
  FORMAT(12.34, 'C', 'en-us') R1,
  FORMAT(012.34, 'C', 'iv') R2,
  FORMAT(12.34, 'C0', 'ja-jp') R3,
  FORMAT(12.54, 'c', 'vi-vn') R4,
  FORMAT(12.54, 'c0', 'en-au') R5,
  FORMAT(12.54, 'c4', 'en-gb') R6;
+--------+--------+------+---------+------+----------+
| R1     | R2     | R3   | R4      | R5   | R6       |
|--------+--------+------+---------+------+----------|
| $12.34 | ¤12.34 | ¥12  | 12,54 ₫ | $13  | £12.5400 |
+--------+--------+------+---------+------+----------+
D atau d

Desimal . Mengonversi angka menjadi rangkaian angka desimal (0-9), diawali dengan tanda minus jika angkanya negatif. Format ini hanya didukung untuk tipe integral.

Jika penentu presisi (opsional) digunakan, itu menentukan jumlah total digit dalam hasil. Jika angka tersebut tidak memiliki banyak digit, angka tersebut akan diisi dengan angka nol di sebelah kirinya.

Contoh :

SELECT 
  FORMAT(123, 'D') R1,
  FORMAT(123, 'D0') R2,
  FORMAT(123, 'D3') R3,
  FORMAT(123, 'd4') R4,
  FORMAT(0123, 'd5') R5,
  FORMAT(1.23, 'd') R6;
+------+------+------+------+-------+------+
| R1   | R2   | R3   | R4   | R5    | R6   |
|------+------+------+------+-------+------|
| 123  | 123  | 123  | 0123 | 00123 | NULL |
+------+------+------+------+-------+------+
E atau e

Eksponensial (ilmiah) . Mengonversi angka menjadi string dalam bentuk “-d.ddd…E+ddd” atau “-d.ddd…e+ddd”, di mana setiap “d” menunjukkan angka (0-9). String dimulai dengan tanda minus jika angkanya negatif. Tepat satu digit selalu mendahului titik desimal.

Jika penentu presisi digunakan, itu menentukan berapa banyak digit di sebelah kanan titik desimal. Jika dihilangkan, enam digit akan muncul di sebelah kanan titik desimal.

Contoh :

SELECT 
  FORMAT(1024.1234567, 'E') R1,
  FORMAT(1024.1234567, 'E0') R2,
  FORMAT(1024.1234567, 'E3') R3,
  FORMAT(1024.1234567, 'e4') R4,
  FORMAT(1024.1234567, 'e7') R5;
+---------------+--------+------------+-------------+----------------+
| R1            | R2     | R3         | R4          | R5             |
|---------------+--------+------------+-------------+----------------|
| 1.024123E+003 | 1E+003 | 1.024E+003 | 1.0241e+003 | 1.0241235e+003 |
+---------------+--------+------------+-------------+----------------+
F atau f

Titik tetap . Mengonversi angka menjadi string dalam bentuk “-ddd.ddd…” di mana setiap “d” menunjukkan angka (0-9). String dimulai dengan tanda minus jika angkanya negatif.

Penentu presisi opsional dapat digunakan untuk menentukan jumlah tempat desimal.

Contoh :

SELECT 
  FORMAT(12.345, 'F', 'en-us') R1,
  FORMAT(12.345, 'F0', 'en-us') R2,
  FORMAT(12.345, 'f3', 'en-us') R3,
  FORMAT(12.345, 'f4', 'en-us') R4,
  FORMAT(12.345, 'f5', 'en-us') R5,
  FORMAT(12.345, 'f', 'vi-vn') R6;
+-------+------+--------+---------+----------+-------+
| R1    | R2   | R3     | R4      | R5       | R6    |
|-------+------+--------+---------+----------+-------|
| 12.35 | 12   | 12.345 | 12.3450 | 12.34500 | 12,35 |
+-------+------+--------+---------+----------+-------+
G atau g

Umum . Mengonversi angka menjadi notasi titik tetap atau notasi ilmiah yang lebih ringkas, bergantung pada jenis angka dan apakah ada penentu presisi.

Jika penentu presisi (opsional) digunakan, ini menentukan jumlah maksimum digit signifikan yang dapat muncul dalam string hasil. Jika dihilangkan, atau jika nilainya nol, presisi ditentukan oleh jenis angka.

Lihat dokumentasi .NET resmi untuk penjelasan tentang bagaimana tipe angka dapat memengaruhi presisi. Anda mungkin perlu melakukan referensi silang dengan dokumentasi resmi untuk FORMAT() untuk melihat bagaimana setiap tipe numerik .NET dipetakan ke tipe numerik T-SQL.

Contoh :

SELECT 
  FORMAT(12.345, 'G', 'en-us') R1,
  FORMAT(12.345, 'G0', 'en-us') R2,
  FORMAT(12.345, 'g3', 'en-us') R3,
  FORMAT(12.345, 'g4', 'en-us') R4,
  FORMAT(12.345, 'g5', 'en-us') R5,
  FORMAT(12.345, 'g', 'vi-vn') R6;
+--------+--------+------+-------+--------+--------+
| R1     | R2     | R3   | R4    | R5     | R6     |
|--------+--------+------+-------+--------+--------|
| 12.345 | 12.345 | 12.3 | 12.35 | 12.345 | 12,345 |
+--------+--------+------+-------+--------+--------+
N atau n

Nomor . Mengonversi angka menjadi string dalam bentuk “-d,ddd,ddd.ddd…”.

Jika penentu presisi (opsional) digunakan, ini menentukan jumlah digit di sebelah kanan titik desimal.

Contoh :

SELECT 
  FORMAT(1234.56, 'N', 'en-us') R1,
  FORMAT(1234.56, 'N0', 'en-us') R2,
  FORMAT(1234.56, 'n3', 'en-us') R3,
  FORMAT(1234.56, 'n4', 'en-us') R4,
  FORMAT(1234.56, 'n', 'vi-vn') R5;
+----------+-------+-----------+------------+----------+
| R1       | R2    | R3        | R4         | R5       |
|----------+-------+-----------+------------+----------|
| 1,234.56 | 1,235 | 1,234.560 | 1,234.5600 | 1.234,56 |
+----------+-------+-----------+------------+----------+
P atau p

Persen . Mengalikan angka dengan 100 dan mengubahnya menjadi string yang mewakili persentase.

Jika penentu presisi digunakan, ini menentukan jumlah tempat desimal.

Contoh :

SELECT 
  FORMAT(.1234, 'P', 'en-us') R1,
  FORMAT(.1234, 'P0', 'en-us') R2,
  FORMAT(.1250, 'p0', 'en-us') R3,
  FORMAT(.1250, 'p3', 'en-us') R4,
  FORMAT(.1250, 'p', 'vi-vn') R5;
+---------+------+------+----------+--------+
| R1      | R2   | R3   | R4       | R5     |
|---------+------+------+----------+--------|
| 12.34 % | 12 % | 13 % | 12.500 % | 12,50% |
+---------+------+------+----------+--------+
R atau r

Pulang pergi . Mencoba memastikan bahwa nilai numerik yang diubah menjadi string diurai kembali menjadi nilai numerik yang sama.

Penentu presisi diabaikan saat menggunakan penentu format ini.

CATATAN :Dalam .NET, penentu format ini hanya didukung oleh Tunggal , Ganda , dan BigInteger jenis nomor. Juga, untuk Ganda nilai, penentu format ini dalam beberapa kasus gagal mengembalikan nilai aslinya dengan sukses. Ini juga menawarkan kinerja yang buruk saat digunakan dengan Ganda dan Lajang jenis.

Selanjutnya, dokumentasi .NET merekomendasikan bahwa penentu format ini digunakan untuk BigInteger ketik saja. Direkomendasikan agar Gandakan jenis menggunakan G17 , dan Lajang jenis menggunakan G9 .

Apa artinya ini untuk SQL Server? Pada dasarnya Anda mungkin harus menghindari penentu format ini di SQL Server. Sebagai gantinya, gunakan G17 untuk mengambang tipe data, dan G9 untuk yang nyata tipe data.

Contoh
Berikut adalah contoh yang membandingkan R penentu format dengan G17 dan G9 .

DECLARE @myFloat float, @myReal real;
SET @myFloat = '123456789.1234567';
SET @myReal = @myFloat;
SELECT 
  @myFloat 'Float Value', 
  @myReal 'Real Value';
SELECT 
  FORMAT(@myFloat, 'R') 'Float R',
  FORMAT(@myFloat, 'G17') 'Float G17',
  FORMAT(@myReal, 'R') 'Real R',
  FORMAT(@myReal, 'G9') 'Real G9';
+------------------+--------------+
| Float Value      | Real Value   |
|------------------+--------------|
| 123456789.123457 | 1.234568E+08 |
+------------------+--------------+
(1 row affected)
+-------------------+-------------------+-----------+-----------+
| Float R           | Float G17         | Real R    | Real G9   |
|-------------------+-------------------+-----------+-----------|
| 123456789.1234567 | 123456789.1234567 | 123456792 | 123456792 |
+-------------------+-------------------+-----------+-----------+
(1 row affected)
X atau x

Heksadesimal . Mengonversi angka menjadi string digit heksadesimal.

Kasus yang digunakan (yaitu X atau x ) menentukan apakah akan menggunakan karakter huruf besar atau kecil untuk digit heksadesimal yang lebih besar dari 9. Ini karena nilai heksadesimal dapat terdiri dari karakter berikut; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, dan f (apa saja). Huruf besar dan huruf kecil mewakili nilai yang sama saat menggunakan heksadesimal (misalnya, f dan F keduanya dikonversi ke 15 dalam desimal).

Penentu format ini hanya didukung untuk tipe integral.

Jika penentu presisi (opsional) digunakan, itu menentukan jumlah total digit dalam hasil. Jika angka tersebut tidak memiliki banyak digit, angka tersebut akan diisi dengan angka nol di sebelah kirinya.

Contoh :

SELECT 
  FORMAT(123, 'X') R1,
  FORMAT(123, 'x') R2,
  FORMAT(123, 'x6') R3,
  FORMAT(12345678, 'x') R4,
  FORMAT(123, 'x6') R5,
  FORMAT(-123, 'x') R6,
  FORMAT(1.23, 'X') R7;
+------+------+--------+--------+--------+----------+------+
| R1   | R2   | R3     | R4     | R5     | R6       | R7   |
|------+------+--------+--------+--------+----------+------|
| 7B   | 7b   | 00007b | bc614e | 00007b | ffffff85 | NULL |
+------+------+--------+--------+--------+----------+------+

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

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

Selain standar di atas format string, Anda juga dapat menggunakan kustom memformat string. Berikut daftar lengkap String Format Numerik Kustom 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. Buat Pemicu untuk mencatat SQL yang memengaruhi tabel?

  2. 13 praktik terbaik keamanan SQL Server

  3. Internal Replikasi Transaksional SQL Server – Bagian 2

  4. Kesalahan fatal PHP:Panggilan ke fungsi yang tidak ditentukan mssql_connect ()

  5. sql server 2008 management studio tidak memeriksa sintaks kueri saya