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

4 modi per convertire un numero in una percentuale in SQL Server (T-SQL)

Ecco 4 modi per convertire un numero in un valore percentuale in SQL Server.

A rigor di termini, in realtà non lo stiamo "convertendo" in percentuale. Stiamo formattando il numero come percentuale. Ma per fare ciò, dobbiamo convertire il numero da un tipo di dati numerico in una stringa.

Ecco 4 modi per farlo.

Esempio 1 – La funzione FORMAT()

La scelta più ovvia da usare è FORMAT() funzione. Ciò ti consente di visualizzare numeri e date in un formato specifico.

Ecco un esempio di utilizzo di questa funzione per visualizzare un numero come percentuale:

SELECT FORMAT(55, 'P') Result;

Risultato:

+------------+
| Result     |
|------------|
| 5,500.00 % |
+------------+

Nota che al nostro valore sono stati aggiunti quattro zeri (due prima della virgola decimale e due dopo).

Per ottenere questo 55 percento sarebbe necessario quanto segue:

SELECT FORMAT(.55, 'P') Result;

Risultato:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Se il numero è il valore percentuale effettivo che desideri, puoi farlo:

SELECT FORMAT(55 * .01, 'P') Result;

Risultato:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

Puoi anche rimuovere la parte frazionaria aggiungendo uno zero all'identificatore di formato:

SELECT FORMAT(.55, 'P0') Result;

Risultato:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Se necessario, puoi anche aggiungere più cifre decimali:

SELECT FORMAT(.55123456, 'P7') Result;

Risultato:

+--------------+
| Result       |
|--------------|
| 55.1234560 % |
+--------------+

Esempio 2 – La funzione CONVERT()

In alternativa puoi usare il CONVERT() funzione per convertire il numero in una stringa, quindi aggiungere un segno di percentuale alla fine.

Questo potrebbe sembrare un po' superfluo data la facilità con cui l'esempio precedente lo ha reso, tuttavia, il FORMAT() La funzione è stata introdotta solo in SQL Server 2012. Pertanto, questo è il modo in cui dovrai farlo se utilizzi una versione precedente di SQL Server.

SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;

Risultato:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Naturalmente, se il tuo numero è qualcosa come .55 e hai bisogno che venga visualizzato come 55,00%, quindi puoi sempre moltiplicarlo per 100:

SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;

Risultato:

+----------+
| Result   |
|----------|
| 55.00 %  |
+----------+

In questo caso ho anche aumentato la dimensione del varchar tipo di dati per soddisfare i caratteri extra.

Inoltre, puoi rimuovere la parte frazionaria usando il LEFT() funzione:

SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;

Risultato:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Anche se dovresti fare attenzione quando lo fai, poiché il valore effettivo potrebbe variare per essere maggiore o minore di 2. In tal caso, potresti utilizzare il TRIM() funzione per tagliare gli zeri iniziali e/o i punti finali:

SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;

Risultato:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Tuttavia, questo non è perfetto e il FORMAT() La funzione ovviamente fornisce molta più flessibilità con un minimo di codice.

Esempio 3 – La funzione CAST()

In alternativa possiamo usare il CAST() funzione per fare la stessa cosa dell'esempio precedente:

SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;

Risultato:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Nota che CAST() e CONVERT() usa sintassi leggermente diverse. Nel caso di CAST() il valore da trasmettere viene prima, mentre è il contrario con CONVERT() .

Esempio 4 – Il CONCAT() Funzione

Puoi anche usare CONCAT() funzione per concatenare un numero con il segno di percentuale:

SELECT CONCAT(55, ' %') Result;

Risultato:

+----------+
| Result   |
|----------|
| 55 %     |
+----------+

Questa funzione converte implicitamente tutti gli argomenti in tipi di stringa prima della concatenazione.