Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

4 funzioni per formattare un numero in 2 posizioni decimali in SQL Server

Quando si utilizza T-SQL con SQL Server, è possibile formattare i numeri utilizzando vari metodi, a seconda del formato desiderato.

Di seguito sono elencate quattro funzioni che possono essere utilizzate per formattare un numero con due cifre decimali in SQL Server.

Il CAST() Funzione

Il modo più ovvio per farlo è convertire il numero in un tipo decimale. Due funzioni che possono farlo per noi sono CAST() e CONVERT() .

Ecco un esempio di utilizzo di CAST() :

SELECT CAST(275 AS DECIMAL(5, 2));

Risultato:

275.00

Possiamo usare questo metodo anche se il numero è già un valore decimale ma con più cifre decimali.

Una cosa da ricordare, tuttavia, è che se stai riducendo il numero di cifre decimali da un numero con più di due cifre decimali, potresti finire con l'arrotondamento per eccesso della seconda cifra decimale:

SELECT CAST(275.4567 AS DECIMAL(5, 2));

Risultato:

275.46

Il CONVERT() Funzione

Qui utilizziamo CONVERT() per fare la stessa cosa:converti il ​​numero in decimale:

SELECT CONVERT(DECIMAL(5, 2), 275);

Risultato:

275.00

Il FORMAT() Funzione

Un altro modo per formattare un numero con due cifre decimali consiste nell'usare FORMAT() funzione:

SELECT FORMAT(275, 'N2');

Risultato:

275.00

Questa funzione converte effettivamente il numero in una stringa, quindi tecnicamente il risultato non è di tipo numerico.

Il N2 parte viene definita stringa di formato. In questo caso, N è per numero e 2 è per il numero di cifre decimali (puoi aumentarlo o diminuirlo secondo necessità).

La stessa tecnica può essere utilizzata per ridurre le cifre decimali a due, da un numero con più cifre decimali:

SELECT FORMAT(275.4567, 'N2');

Risultato:

275.46

È stato arrotondato per eccesso, proprio come quando abbiamo convertito il numero nell'altro esempio.

Un altro modo per farlo è utilizzare una stringa di formato personalizzata. Le stringhe di formato personalizzate consentono di specificare un formato che potrebbe non essere supportato da una stringa di formato standard.

Ecco un esempio di utilizzo di stringhe di formato personalizzate:

SELECT 
    FORMAT(275, '###.##') AS "###.##",
    FORMAT(275, '000.00') AS "000.00",
    FORMAT(275.4567, '###.##') AS "###.##",
    FORMAT(275.4567, '000.00') AS "000.00";

Risultato:

+----------+----------+----------+----------+
| ###.##   | 000.00   | ###.##   | 000.00   |
|----------+----------+----------+----------|
| 275      | 275.00   | 275.46   | 275.46   |
+----------+----------+----------+----------+

Possiamo vedere che c'è una differenza tra l'utilizzo di # e 0 nella stringa di formato. Il # l'identificatore di formato sopprime tutti gli zeri insignificanti mentre 0 l'identificatore di formato non lo fa.

Ma forse ancora più importante (ai fini di questo articolo), il 0 l'identificatore di formato consente di aggiungere zeri insignificanti se non sono presenti nel numero originale. Pertanto, può essere utilizzato per aggiungere due cifre decimali a un numero intero (come mostrato nell'esempio precedente).

Il STR() Funzione

Un altro modo per formattare un numero con due cifre decimali consiste nell'usare STR() funzione:

SELECT STR(275, 6, 2);

Risultato:

275.00

Questa funzione restituisce i dati dei caratteri convertiti dai dati numerici. I dati del carattere sono giustificati a destra, con una lunghezza e una precisione decimale specificate.

Il primo argomento è un'espressione del tipo di dati float con un punto decimale.

Il secondo argomento è la lunghezza totale. Ciò include punto decimale, segno, cifre e spazi. Il valore predefinito è 10.

Il terzo argomento è il numero di posizioni a destra della virgola decimale. Deve essere minore o uguale a 16.