Hier zijn 4 manieren om een getal om te zetten in een procentuele waarde in SQL Server.
Strikt genomen "converteren" we het niet echt naar een percentage. We formatteren het getal als een percentage. Maar om dat te doen, moeten we het getal converteren van een numeriek gegevenstype naar een string.
Hier zijn 4 manieren om dat te doen.
Voorbeeld 1 – De FORMAT() Functie
De meest voor de hand liggende keuze om te gebruiken is de FORMAT()
functie. Hiermee kunt u getallen en datums in een specifiek formaat weergeven.
Hier is een voorbeeld van het gebruik van deze functie om een getal als percentage weer te geven:
SELECT FORMAT(55, 'P') Result;
Resultaat:
+------------+ | Result | |------------| | 5,500.00 % | +------------+
Merk op dat er vier nullen zijn toegevoegd aan onze waarde (twee voor de komma en twee erna).
Het volgende is nodig om deze 55 procent te maken:
SELECT FORMAT(.55, 'P') Result;
Resultaat:
+----------+ | Result | |----------| | 55.00 % | +----------+
Als het getal de werkelijke procentuele waarde is die u wilt, kunt u dit doen:
SELECT FORMAT(55 * .01, 'P') Result;
Resultaat:
+----------+ | Result | |----------| | 55.00 % | +----------+
U kunt het breukgedeelte ook verwijderen door een nul toe te voegen aan de formaatspecificatie:
SELECT FORMAT(.55, 'P0') Result;
Resultaat:
+----------+ | Result | |----------| | 55 % | +----------+
Indien nodig kunt u ook meer decimalen toevoegen:
SELECT FORMAT(.55123456, 'P7') Result;
Resultaat:
+--------------+ | Result | |--------------| | 55.1234560 % | +--------------+
Voorbeeld 2 – De CONVERT() Functie
U kunt ook de CONVERT()
. gebruiken functie om het getal naar een tekenreeks te converteren en vervolgens een percentageteken aan het einde toe te voegen.
Dit lijkt misschien een beetje overbodig, gezien hoe gemakkelijk het vorige voorbeeld het maakte, maar de FORMAT()
functie is pas geïntroduceerd in SQL Server 2012. Daarom is dit hoe u het moet doen als u een eerdere versie van SQL Server gebruikt.
SELECT CONVERT(VARCHAR(4), 55) + ' %' Result;
Resultaat:
+----------+ | Result | |----------| | 55 % | +----------+
Natuurlijk, als je nummer zoiets is als .55
en je hebt dat nodig om als 55,00 % weer te geven, dan kun je het altijd met 100 vermenigvuldigen:
SELECT CONVERT(VARCHAR(6), 0.55 * 100) + ' %' Result;
Resultaat:
+----------+ | Result | |----------| | 55.00 % | +----------+
In dit geval heb ik ook de grootte van de varchar . vergroot gegevenstype om te voorzien in de extra tekens.
U kunt ook het fractionele deel verwijderen door de LEFT()
. te gebruiken functie:
SELECT CONVERT(VARCHAR(6), LEFT(0.55 * 100, 2)) + ' %' Result;
Resultaat:
+----------+ | Result | |----------| | 55 % | +----------+
Hoewel u hierbij voorzichtig moet zijn, omdat de werkelijke waarde kan variëren en meer of minder dan 2 kan zijn. In dat geval kunt u de TRIM()
gebruiken functie om voorloopnullen en/of volgpunten bij te knippen:
SELECT CONVERT(VARCHAR(6), TRIM('0,.' FROM LEFT(0.55 * 100, 3))) + ' %' Result;
Resultaat:
+----------+ | Result | |----------| | 55 % | +----------+
Dit is echter niet perfect, en de FORMAT()
functie biedt uiteraard veel meer flexibiliteit met een minimum aan code.
Voorbeeld 3 – De CAST()-functie
We kunnen ook de CAST()
. gebruiken functie om hetzelfde te doen als in het vorige voorbeeld:
SELECT CAST(55 AS VARCHAR(4)) + ' %' Result;
Resultaat:
+----------+ | Result | |----------| | 55 % | +----------+
Merk op dat CAST()
en CONVERT()
gebruik iets andere syntaxis. In het geval van CAST()
de te casten waarde komt eerst, terwijl het andersom is met CONVERT()
.
Voorbeeld 4 – De CONCAT()
Functie
U kunt ook de CONCAT()
. gebruiken functie om een getal samen te voegen met het procentteken:
SELECT CONCAT(55, ' %') Result;
Resultaat:
+----------+ | Result | |----------| | 55 % | +----------+
Deze functie converteert impliciet alle argumenten naar stringtypes voordat ze worden samengevoegd.