2009-08-25 11 views
0

J'ai une procédure stockée qui interroge certaines données et les envoie par e-mail, je voudrais changer la procédure afin que tous les nombres dans les milliers soient affichés avec des virgules comme 1000. Je suppose que la meilleure façon de le faire dans SQL est de le convertir en une chaîne et d'ajouter la virgule?Mise en forme des entiers SQL Server

Remerciements

Répondre

2

Voici une relativement réponse propre. Convertir en argent (aucune perte de type de données). Puis convertir en varchar avec le style 1 (il fait les virgules pour vous), puis supprimez le .00 de la fin, car il vient avec le type de données d'argent.

select REPLACE(CONVERT(VARCHAR, CONVERT(MONEY, 1234), 1), '.00', '') 

Il y a une ligne fine pour comprendre combien de manipulations de chaînes avant de faire une fonction en ligne, mais cela devrait être une conversion assez rapide.

Merci, Eric

1

Correct. Un entier n'a pas de formatage par définition du type de données.

Vous devez donc convertir la valeur en une chaîne (varchar par exemple) ou, comme c'est la pratique la plus courante, faire en sorte que le niveau de présentation gère la mise en forme de la valeur.

+0

Dans ce cas, il n'y a pas de présentation lié que la procédure stockée si le tir un email avec les données. – Gavin

0

Si vous êtes coincé avec SQL Server comme la présentation de l'e-mail (aucune autre application de rapport),

SELECT CONVERT(varchar(24),CONVERT(money,CAST(12345678 AS VarChar(24))),1)

+0

Existe-t-il un moyen de le faire sans les décimales? – Gavin

+0

Voir la réponse @Strommy. – JeffO