Questo articolo fornisce un riferimento per gli identificatori di formato numerico standard che possono essere utilizzati durante la formattazione dei numeri utilizzando FORMAT()
funzione in SQL Server. Esempi inclusi.
Alcuni degli esempi utilizzano identificatori di precisione (questi sono costituiti da una o due cifre aggiunte all'identificatore di formato). Gli specificatori di precisione possono essere un valore compreso tra 0 e 99, che specifica la precisione del risultato. Il modo in cui funziona dipende dall'identificatore di formato utilizzato. Per alcuni identificatori di formato, specificherà il numero totale di cifre nel risultato, per altri specificherà il numero di cifre decimali. Negli altri casi verrà ignorato del tutto.
Formatta stringa | Descrizione/Esempio |
---|---|
C o c | Valuta . Converte il numero in una stringa che rappresenta un importo in valuta. È possibile utilizzare uno specificatore di precisione opzionale per specificare il numero di cifre decimali. Esempi (usando diverse culture) : 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 o d | Decimale . Converte il numero in una stringa di cifre decimali (0-9), precedute da un segno meno se il numero è negativo. Questo formato è supportato solo per i tipi integrali. Se viene utilizzato l'identificatore di precisione (opzionale), specifica il numero totale di cifre nel risultato. Se il numero non ha tante cifre, verrà riempito con zeri alla sua sinistra. Esempi : 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 o e | Esponenziale (scientifico) . Converte il numero in una stringa della forma “-d.ddd…E+ddd” o “-d.ddd…e+ddd”, dove ogni “d” indica una cifra (0-9). La stringa inizia con un segno meno se il numero è negativo. Esattamente una cifra precede sempre il punto decimale. Se viene utilizzato uno specificatore di precisione, specifica quante cifre si trovano a destra della virgola decimale. Se omesso, a destra del punto decimale appariranno sei cifre. Esempi : 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 o f | Punto fisso . Converte il numero in una stringa della forma “-ddd.ddd…” dove ogni “d” indica una cifra (0-9). La stringa inizia con un segno meno se il numero è negativo. È possibile utilizzare uno specificatore di precisione opzionale per specificare il numero di cifre decimali. Esempi : 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 o g | Generale . Converte il numero in una notazione a virgola fissa o scientifica più compatta, a seconda del tipo di numero e della presenza di uno specificatore di precisione. Se viene utilizzato l'identificatore di precisione (facoltativo), definisce il numero massimo di cifre significative che possono essere visualizzate nella stringa del risultato. Se omesso, o se il valore è zero, la precisione è determinata dal tipo di numero.
Consulta la documentazione ufficiale di .NET per una spiegazione di come il tipo di numero può influenzare la precisione. Potrebbe essere necessario fare un riferimento incrociato con la documentazione ufficiale per Esempi : 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 o n | Numero . Converte il numero in una stringa del formato “-d,ddd,ddd.ddd…”. Se viene utilizzato l'identificatore di precisione (opzionale), definisce il numero di cifre a destra della virgola decimale. Esempi : 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 o p | Percentuale . Moltiplica il numero per 100 e lo converte in una stringa che rappresenta una percentuale. Se viene utilizzato l'identificatore di precisione, definisce il numero di cifre decimali. Esempi : 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 o r | Andata e ritorno . Tenta di garantire che un valore numerico convertito in una stringa venga analizzato nuovamente nello stesso valore numerico. L'identificatore di precisione viene ignorato quando si utilizza questo identificatore di formato. NOTA :In .NET, questo identificatore di formato è supportato solo da Single , Doppio e BigInteger tipi di numeri. Inoltre, per Doppio valori, questo identificatore di formato in alcuni casi non riesce a eseguire correttamente il round trip del valore originale. Offre anche scarse prestazioni se utilizzato con il Double e Singolo tipi.
Inoltre, la documentazione .NET consiglia di utilizzare questo identificatore di formato per BigInteger digitare solo. Si consiglia di raddoppiare i tipi usano
Cosa significa questo per SQL Server? Fondamentalmente dovresti probabilmente evitare questo identificatore di formato in SQL Server. Invece, usa
Esempi 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 o x | esadecimale . Converte il numero in una stringa di cifre esadecimali.
Il caso utilizzato (cioè Questo identificatore di formato è supportato solo per i tipi integrali. Se viene utilizzato l'identificatore di precisione (opzionale), specifica il numero totale di cifre nel risultato. Se il numero non ha tante cifre, verrà riempito con zeri alla sua sinistra. Esempi : 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 | +------+------+--------+--------+--------+----------+------+ |
L'elenco sopra è un elenco completo di stringhe di formato numerico personalizzate .NET valide, basato sulle informazioni della documentazione ufficiale .NET per le stringhe di formato numerico standard sul sito Web Microsoft al momento della scrittura.
Il motivo per cui sono rilevanti per SQL Server FORMAT()
funzione è che questa funzione accetta solo stringhe di formato .NET Framework valide.
Oltre allo standard di cui sopra stringhe di formato, puoi anche usare personalizzato stringhe di formato. Ecco un elenco completo di stringhe di formato numerico personalizzate che puoi utilizzare con SQL Server.
Puoi anche formattare i valori di data e ora. Consulta l'elenco delle stringhe di formato di data e ora standard e le stringhe di formato di data e ora personalizzate che puoi utilizzare con FORMAT()
funzione.
Se stai ancora cercando di capire cos'è una stringa di formato, vedi Che cos'è una stringa di formato in SQL Server? per una comprensione di base delle stringhe di formato e di come si riferiscono a FORMAT()
funzione.