J'essaie simplement de formater un nombre sous forme de pourcentage avec deux décimales. S'il est 37 divisé par 38 (alias .973684210526315789), j'aimerais qu'il affiche 97,36% dans la sortie SQL. Je sais qu'il est recommandé de formater dans l'application, mais il s'agit d'une exportation automatisée. Ceci utilise SQL Server 2008.
Voici ce que j'ai maintenant:
select CONVERT(VARCHAR(50),cast(37 as decimal)/cast(38 as decimal)*100)+' %' AS [%]
Si vous pouviez expliquer quels sont les différents paramètres dans n'importe quelle fonction, cela pourrait être utile.
La réponse de M.ALi pourrait être modifiée comme suit:
select Cast(Cast((37.0/38.0)*100 as decimal(18,2)) as varchar(5)) + ' %' as Percentage
Dans SQL Server 2012 et les versions ultérieures, il existe la fonction FORMAT()
. Vous pouvez passer un 'P'
paramètre pour le pourcentage. Par exemple:
SELECT FORMAT((37.0/38.0),'P') as [Percentage] -- 97.37 %
Pour précision du pourcentage de soutien décimal , vous pouvez utiliser P0
sans décimales (nombres entiers) ou P3
pour 3 décimales (97,368%).
SELECT FORMAT((37.0/38.0),'P0') as [WholeNumberPercentage] -- 97 %
SELECT FORMAT((37.0/38.0),'P3') as [ThreeDecimalsPercentage] -- 97.368 %
SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'
RESULT: 0.97 %
Et pour toutes les versions de SQL Server
SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))
L'utilisation de la fonction FORMAT dans les nouvelles versions de SQL Server est beaucoup plus simple et permet beaucoup plus de contrôle:
FORMAT(yournumber, '#,##0.0%')
L'avantage de ceci est que vous pouvez contrôler des éléments supplémentaires tels que des séparateurs de milliers et vous ne disposez pas de cet espace entre le nombre et '%'.