Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

4 Möglichkeiten zum Konvertieren einer Zahl in einen Prozentsatz in SQL Server (T-SQL)

Hier sind 4 Möglichkeiten, eine Zahl in SQL Server in einen Prozentwert umzuwandeln.

Genau genommen „wandeln“ wir es nicht in einen Prozentsatz um. Wir formatieren die Zahl als Prozentsatz. Aber dazu müssen wir die Zahl von einem numerischen Datentyp in einen String umwandeln.

Hier sind 4 Möglichkeiten, dies zu tun.

Beispiel 1 – Die FORMAT()-Funktion

Die naheliegendste Wahl ist das FORMAT() Funktion. Damit können Sie Zahlen und Daten in einem bestimmten Format anzeigen.

Hier ist ein Beispiel für die Verwendung dieser Funktion, um eine Zahl als Prozentsatz anzuzeigen:

SELECT FORMAT(55, 'P') Result;

Ergebnis:

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

Beachten Sie, dass unserem Wert vier Nullen hinzugefügt wurden (zwei vor dem Dezimalkomma und zwei danach).

Folgendes wäre erforderlich, um diese 55 Prozent zu erreichen:

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

Ergebnis:

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

Wenn die Zahl der gewünschte Prozentwert ist, können Sie Folgendes tun:

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

Ergebnis:

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

Sie können den Bruchteil auch entfernen, indem Sie dem Formatbezeichner eine Null hinzufügen:

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

Ergebnis:

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

Bei Bedarf können Sie auch weitere Nachkommastellen hinzufügen:

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

Ergebnis:

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

Beispiel 2 – Die CONVERT()-Funktion

Alternativ können Sie auch CONVERT() verwenden -Funktion, um die Zahl in eine Zeichenfolge umzuwandeln, und fügen Sie dann am Ende ein Prozentzeichen hinzu.

Dies mag etwas unnötig erscheinen, wenn man bedenkt, wie einfach das vorherige Beispiel es gemacht hat, aber das FORMAT() Funktion wurde erst in SQL Server 2012 eingeführt. Daher müssen Sie dies so tun, wenn Sie eine frühere Version von SQL Server verwenden.

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

Ergebnis:

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

Natürlich, wenn Ihre Nummer so etwas wie .55 ist und Sie brauchen das, um als 55,00 % angezeigt zu werden, dann können Sie es immer mit 100 multiplizieren:

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

Ergebnis:

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

In diesem Fall habe ich auch die Größe des varchar erhöht Datentyp für die zusätzlichen Zeichen.

Außerdem können Sie den Bruchteil entfernen, indem Sie LEFT() verwenden Funktion:

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

Ergebnis:

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

Obwohl Sie dabei vorsichtig sein müssen, da der tatsächliche Wert von mehr oder weniger als 2 abweichen kann. In diesem Fall können Sie TRIM() verwenden Funktion zum Trimmen führender Nullen und/oder nachgestellter Punkte:

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

Ergebnis:

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

Dies ist jedoch nicht perfekt, und das FORMAT() Funktion bietet offensichtlich viel mehr Flexibilität mit einem Minimum an Code.

Beispiel 3 – Die CAST()-Funktion

Wir können alternativ den CAST() verwenden Funktion dasselbe wie im vorherigen Beispiel:

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

Ergebnis:

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

Beachten Sie, dass CAST() und CONVERT() verwenden Sie leicht unterschiedliche Syntaxen. Im Fall von CAST() der zu wandelnde Wert steht an erster Stelle, während es bei CONVERT() umgekehrt ist .

Beispiel 4 – Der CONCAT() Funktion

Sie können auch CONCAT() verwenden Funktion zum Verketten einer Zahl mit dem Prozentzeichen:

SELECT CONCAT(55, ' %') Result;

Ergebnis:

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

Diese Funktion wandelt vor der Verkettung implizit alle Argumente in String-Typen um.