Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

4 façons de convertir un nombre en pourcentage dans SQL Server (T-SQL)

Voici 4 façons de convertir un nombre en pourcentage dans SQL Server.

À proprement parler, nous ne le "convertissons" pas en pourcentage. Nous formatons le nombre en pourcentage. Mais pour ce faire, nous devons convertir le nombre d'un type de données numérique en une chaîne.

Voici 4 façons de le faire.

Exemple 1 - La fonction FORMAT()

Le choix le plus évident à utiliser est le FORMAT() une fonction. Cela vous permet d'afficher des nombres et des dates dans un format spécifique.

Voici un exemple d'utilisation de cette fonction pour afficher un nombre sous forme de pourcentage :

SELECT FORMAT(55, 'P') Result;

Résultat :

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

Notez que quatre zéros ont été ajoutés à notre valeur (deux avant la virgule et deux après).

Les éléments suivants seraient nécessaires pour atteindre ces 55 % :

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

Résultat :

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

Si le nombre est le pourcentage réel que vous voulez, vous pouvez faire ceci :

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

Résultat :

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

Vous pouvez également supprimer la partie décimale en ajoutant un zéro au spécificateur de format :

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

Résultat :

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

Si nécessaire, vous pouvez également ajouter d'autres décimales :

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

Résultat :

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

Exemple 2 - La fonction CONVERT()

Vous pouvez également utiliser le CONVERT() pour convertir le nombre en chaîne, puis ajoutez un signe de pourcentage à la fin.

Cela peut sembler un peu inutile compte tenu de la simplicité de l'exemple précédent, cependant, le FORMAT() La fonction n'a été introduite que dans SQL Server 2012. C'est donc ainsi que vous devrez le faire si vous utilisez une version antérieure de SQL Server.

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

Résultat :

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

Bien sûr, si votre numéro est quelque chose comme .55 et vous avez besoin que cela s'affiche comme 55,00 %, alors vous pouvez toujours le multiplier par 100 :

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

Résultat :

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

Dans ce cas, j'ai également augmenté la taille du varchar type de données pour prendre en charge les caractères supplémentaires.

De plus, vous pouvez supprimer la partie fractionnaire en utilisant le LEFT() fonction :

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

Résultat :

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

Bien que vous deviez faire attention lorsque vous le faites, car la valeur réelle peut varier pour être supérieure ou inférieure à 2. Dans ce cas, vous pouvez utiliser le TRIM() fonction pour supprimer les zéros de début et/ou les points de fin :

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

Résultat :

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

Cependant, ce n'est pas parfait, et le FORMAT() offre évidemment beaucoup plus de flexibilité avec un minimum de code.

Exemple 3 - La fonction CAST()

Nous pouvons alternativement utiliser le CAST() fonction pour faire la même chose que l'exemple précédent :

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

Résultat :

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

Notez que CAST() et CONVERT() utiliser des syntaxes légèrement différentes. Dans le cas de CAST() la valeur à convertir vient en premier, alors que c'est l'inverse avec CONVERT() .

Exemple 4 – Le CONCAT() Fonction

Vous pouvez également utiliser le CONCAT() fonction pour concaténer un nombre avec le signe pourcentage :

SELECT CONCAT(55, ' %') Result;

Résultat :

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

Cette fonction convertit implicitement tous les arguments en types de chaînes avant la concaténation.