Gelukkig(?), in SQL Server 2012+ , kunt u nu FORMAT() gebruiken om dit te bereiken:
FORMAT(@s,'#,0.0000')
In eerdere versies, met het risico er echt lelijk uit te zien
[Query] :
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))
In het eerste deel gebruiken we MONEY->VARCHAR om de komma's te produceren, maar FLOOR() wordt gebruikt om ervoor te zorgen dat de decimalen naar .00
gaan . Dit is gemakkelijk te herkennen en te vervangen door de 4 cijfers achter de komma met behulp van een combinatie van verschuivingen (*10000
) en CAST als INT (truncatie) om de cijfers af te leiden.
[Resultaten] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Maar tenzij u bedrijfsrapporten moet aanleveren met SQL Server Management Studio of SQLCMD, is dit NOOIT de juiste oplossing, zelfs als het kan. Elke front-end- of rapportageomgeving heeft de juiste functies om de opmaak van het display te verwerken.