web-dev-qa-db-fra.com

Formater le nombre sous forme de pourcentage dans MS SQL Server

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.

27
user3513237

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
35
Sharad

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 %
78
jbeldock
SELECT cast( cast(round(37.0/38.0,2) AS DECIMAL(18,2)) as varchar(100)) + ' %'

RESULT:  0.97 %
5
M.Ali

Et pour toutes les versions de SQL Server

SELECT CAST(0.973684210526315789 * 100 AS DECIMAL(18, 2))
3
sqluser

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 '%'.

2
Simon Darlow