Questo articolo fornisce un riferimento per gli identificatori di formato numerico personalizzati che possono essere utilizzati durante la formattazione dei numeri utilizzando FORMAT()
funzione in SQL Server. Esempi inclusi.
Formatta stringa | Descrizione/Esempio |
---|---|
0 | Segnaposto zero . Sostituisce lo zero con la cifra corrispondente se presente; in caso contrario, nella stringa del risultato viene visualizzato zero. Esempi : 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 | +------+------+------+------+------+ |
# | Segnaposto cifra . Sostituisce il simbolo “#” con la cifra corrispondente se presente; in caso contrario, nella stringa del risultato non viene visualizzata alcuna cifra. Nessuna cifra appare nella stringa del risultato se la cifra corrispondente nella stringa di input è uno 0 non significativo. Esempi : 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 | +------+------+------+------+------+ |
. | Punto decimale . Determina la posizione del separatore decimale nella stringa del risultato. Esempi : 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 | +------+-------+------+-------+ |
, | Separatore di gruppo e ridimensionamento dei numeri . Può essere utilizzato sia come separatore di gruppo (noto anche come separatore dei mille) che come identificatore di ridimensionamento numerico.
Per specificare un separatore di gruppo, inserire una o più virgole tra i segnaposto di due cifre (0 o #) che formattano le cifre integrali di un numero. Ciò comporta l'inserimento di un carattere separatore di gruppo tra ciascun gruppo di numeri nella parte integrale dell'output. Per specificare un identificatore di ridimensionamento numerico, inserisci una o più virgole immediatamente a sinistra del punto decimale esplicito o implicito. Esempi:come separatore di gruppo : 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 | +--------------+------------+------------+ Esempi:come identificatore di ridimensionamento numerico : SELECT FORMAT(12000, '#,', 'en-US') 'R1', FORMAT(1234567890, '#,', 'en-US') R2, FORMAT(1234567890, '#,,', 'en-US') R3; +------+---------+------+ | R1 | R2 | R3 | |------+---------+------| | 12 | 1234568 | 1235 | +------+---------+------+ Esempi:entrambi : SELECT FORMAT(1234567890, '#,#,', 'en-US') R1, FORMAT(1234567890, '#,#,,', 'en-US') R2; +-----------+-------+ | R1 | R2 | |-----------+-------| | 1,234,568 | 1,235 | +-----------+-------+ |
% | Segnaposto percentuale . Moltiplica un numero per 100 e inserisce un simbolo di percentuale localizzato nella stringa del risultato. Esempi : 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% | +--------+-------+------+--------+-------+ |
‰ | Segnaposto per mille . Moltiplica un numero per 1000 e inserisce un simbolo per mille localizzato nella stringa del risultato. Esempi : 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 ‰ | +--------+--------+------+--------+ |
|
Notazione esponenziale . Se seguito da almeno uno zero ( Esempi : 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 | +------+------+-------+-----------+------+ |
| Carattere di escape . Fa interpretare il carattere successivo come un valore letterale anziché come identificatore di formato personalizzato. Esempio : SELECT FORMAT(123, '\#0000') Result; +----------+ | Result | |----------| | #0123 | +----------+ |
| Delimitatore di stringa letterale . Indica che i caratteri inclusi devono essere copiati nella stringa del risultato senza modifiche. Esempio : SELECT FORMAT(23, '## Degrees') Result; +------------+ | Result | |------------| | 23 Degrees | +------------+ |
| Separatore di sezione . Questo è un identificatore di formato condizionale che definisce le sezioni con stringhe di formato separate per numeri positivi, negativi e zero. Ciò consente di applicare una formattazione diversa a un numero a seconda che il suo valore sia positivo, negativo o zero. Una stringa di formato personalizzata può contenere fino a tre sezioni separate da punto e virgola.
Si noti che i valori negativi vengono sempre visualizzati senza un segno meno quando si utilizzano i separatori di sezione. Se desideri che il valore formattato finale abbia un segno meno, dovrai includere esplicitamente il segno meno come parte della stringa di formato personalizzata. Questo vale anche per qualsiasi altra formattazione preesistente associata a un numero.
Esempio:una sezione (senza separatori di sezione) 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) | +--------------+---------------+------------+ Nota che il segno meno rimane intatto, perché non ho usato separatori di sezione. Esempi:due sezioni : /* 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) | +----------------------+----------------------+ Esempi:tre sezioni : /* 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) | +----------------+-----------------+-----------+-------------------+ |
Altro | Tutti gli altri caratteri. Il carattere viene copiato nella stringa del risultato invariato. Esempio : SELECT FORMAT(12, '# °C') Result; +----------+ | Result | |----------| | 12 °C | +----------+ |
L'elenco sopra è un elenco completo di stringhe di formato personalizzato .NET valide, basato sulle informazioni della documentazione ufficiale .NET per le stringhe di formato personalizzate sul sito Web Microsoft al momento della scrittura.
Il motivo per cui sono rilevanti per SQL Server FORMAT()
funzione è che accetta solo stringhe di formato .NET Framework valide.
Oltre a quanto sopra personalizzato format string, puoi anche usare standard stringhe di formato. Ecco un elenco completo di stringhe di formato numerico standard 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.