Est-il un moyen simple de format décimales en T-SQL?
Je sais que ça pourrait être fait trivialement dans un non-SQL environnement [post-traitement de données, interface, qu'avez-vous], mais ce n'est pas possible pour le moment. Est-il possible de prendre un decimal(5,2)
et la convertir en une varchar
sans les zéros de fin/points décimaux? Par exemple:
declare @number decimal(5,2)
set @number = 123.00
select cast(@number as varchar) as FormattedNumber
Et le résultat est '123.00'. Est-il un (simple) pour obtenir le '123' à la place? Et de même, au lieu de "123.30', '123.3'? Pourrait-il faire de déterminer si oui ou non les centièmes/dixièmes places étaient de 0 et manuellement le parage des personnages, mais je voulais savoir si il y avait une solution plus élégante.
Je retourne les données de la base de données, et de laisser la mise en forme vers le bas pour le front-end. Est-il une raison pourquoi vous ne pouvez pas faire cela?
Ouais, comme je l'ai dit, ce n'est pas vraiment une option, - le frontend, tel qu'il est, est trop générale pour avoir des cas particuliers de mise en forme des champs spécifiques d'être de retour (comme le nombre de colonnes, etc), et aucune autre colonne doit être formaté, donc la chose la plus simple que je vois est juste de le faire à partir de SQL.
Avec SQL Server 2012+ Vous pouvez utiliser la fonction FORMAT (). Vous pouvez utiliser '#,##' ou '#,##.0 " comme deuxième paramètre. msdn.microsoft.com/en-us/library/hh213505.aspx
Ouais, comme je l'ai dit, ce n'est pas vraiment une option, - le frontend, tel qu'il est, est trop générale pour avoir des cas particuliers de mise en forme des champs spécifiques d'être de retour (comme le nombre de colonnes, etc), et aucune autre colonne doit être formaté, donc la chose la plus simple que je vois est juste de le faire à partir de SQL.
Avec SQL Server 2012+ Vous pouvez utiliser la fonction FORMAT (). Vous pouvez utiliser '#,##' ou '#,##.0 " comme deuxième paramètre. msdn.microsoft.com/en-us/library/hh213505.aspx
OriginalL'auteur Ian Henry | 2010-01-27
Vous devez vous connecter pour publier un commentaire.
Ce sujet:
Toutefois, vous souhaitez tester ce soin avec vos données brutes en premier.
OriginalL'auteur Frank Kalis
De cette façon est assez simple:
Renvoie '124'.
La seule chose à considérer est de savoir si vous voulez arrondir vers le haut/vers le bas, ou simplement enlever les zéros et les points décimaux sans arrondi; vous auriez jeté la VIRGULE comme un INT dans le second cas.
OriginalL'auteur user250118
Pour le contrôle de la mise en forme de nombres en T-SQL, vous devez utiliser le
FORMAT()
fonction. Par exemple:Le résultat sera:
Les arguments de l'
FORMAT()
fonction sont les suivantes:La valeur de l'argument est votre numéro. L'argument format est un type CLR chaîne de formatage (dans cet exemple, j'ai précisé que "le nombre normal, zéro précision"). L'option de la culture argument permet de spécifier le serveur de la culture paramètre de format de le nombre que par une culture souhaitée.
Voir aussi la MSDN ref page pour
FORMAT()
.OriginalL'auteur Mark Micallef
La fonction Convert pouvez faire ce que vous voulez faire.
OriginalL'auteur Randy Minder
De me laisser tenter cette fois....
OriginalL'auteur roufamatic
Vous pourrait priver les zéros de fin dans une boucle while:
Mais comme AdaTheDev commenté, c'est plus facile à faire côté client.
OriginalL'auteur Andomar
Simple et élégant? Pas tellement...mais que c'est T-SQL pour vous:
OriginalL'auteur Mark Brackett
Utiliser le Format(valeur,chaîne de format,de la culture) fonction SQL Server 2012+
OriginalL'auteur Andrew
Si vous avez SQL Server 2012 ou Plus, vous pouvez utiliser le format de la fonction comme ceci:
Bien sûr, le format de la fonction retournera un nvarchar, et pas un varchar. Vous pouvez exprimés pour obtenir un type spécifique.
OriginalL'auteur Christopher Rose
Aussi, jetez un oeil au T-SQL fonction STR dans la documentation en Ligne, ce qui peut être utilisé pour la mise en forme des flotteurs et pourrait fonctionner pour votre cas. Pour une raison quelconque, il n'est pas venu dans les recherches Google concernant ce problème.
OriginalL'auteur user1664143