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

Places décimales au format SQL Server avec des virgules

Heureusement (?), dans SQL Server 2012+ , vous pouvez maintenant utiliser FORMAT() pour y parvenir :

FORMAT(@s,'#,0.0000')

Dans les versions précédentes, au risque d'avoir l'air vraiment moche

[Requête] :

declare @s decimal(18,10);
set @s = 1234.1234567;
select replace(convert(varchar,cast(floor(@s) as money),1),'.00',
    '.'+right(cast(@s * 10000 +10000.5 as int),4))

Dans la première partie, nous utilisons MONEY->VARCHAR pour produire les virgules, mais FLOOR() est utilisé pour garantir que les décimales vont à .00 . Ceci est facilement identifiable et remplacé par les 4 chiffres après la décimale en utilisant un mélange de décalage (*10000 ) et CAST comme INT (troncature) pour dériver les chiffres.

[Résultats] :

|   COLUMN_0 |
--------------
| 1,234.1235 |

Mais à moins que vous ne deviez fournir des rapports commerciaux à l'aide de SQL Server Management Studio ou SQLCMD, ce n'est JAMAIS la bonne solution, même si cela peut être fait. Tout environnement frontal ou de création de rapports dispose de fonctions appropriées pour gérer le formatage de l'affichage.