Heldigvis(?), i SQL Server 2012+ , kan du nu bruge FORMAT() for at opnå dette:
FORMAT(@s,'#,0.0000')
I tidligere versioner med risiko for at se rigtig grim ud
[Forespørgsel] :
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ørste del bruger vi MONEY->VARCHAR til at producere kommaerne, men FLOOR() bruges til at sikre, at decimalerne går til .00
. Dette er let identificerbart og erstattes med de 4 cifre efter decimalen ved hjælp af en blanding af skift (*10000
) og CAST som INT (trunkering) for at udlede cifrene.
[Resultater] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Men medmindre du skal levere forretningsrapporter ved hjælp af SQL Server Management Studio eller SQLCMD, er dette ALDRIG den rigtige løsning, selvom det kan lade sig gøre. Ethvert frontend- eller rapporteringsmiljø har de rigtige funktioner til at håndtere skærmformatering.