Tack och lov(?), i SQL Server 2012+ , kan du nu använda FORMAT() för att uppnå detta:
FORMAT(@s,'#,0.0000')
I tidigare versioner, med risk att se riktigt ful ut
[Fråga] :
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))
I den första delen använder vi MONEY->VARCHAR för att producera kommatecken, men FLOOR() används för att säkerställa att decimalerna går till .00
. Detta är lätt identifierbart och ersätts med de fyra siffrorna efter decimalen med en blandning av skiftning (*10000
) och CAST som INT (trunkering) för att härleda siffrorna.
[Resultat] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Men om du inte måste leverera affärsrapporter med SQL Server Management Studio eller SQLCMD är detta ALDRIG den korrekta lösningen, även om det kan göras. Alla gränssnitt eller rapporteringsmiljöer har lämpliga funktioner för att hantera bildskärmsformatering.