Zum Glück (?) in SQL Server 2012+ , können Sie jetzt FORMAT() verwenden um dies zu erreichen:
FORMAT(@s,'#,0.0000')
In früheren Versionen auf die Gefahr hin, wirklich hässlich auszusehen
[Abfrage] :
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))
Im ersten Teil verwenden wir MONEY->VARCHAR, um die Kommas zu erzeugen, aber FLOOR() wird verwendet, um sicherzustellen, dass die Dezimalstellen zu .00
gehen . Diese ist leicht zu erkennen und wird durch die 4 Stellen hinter dem Komma durch eine Mischung aus Verschiebungen ersetzt (*10000
) und CAST als INT (Abschneiden), um die Ziffern abzuleiten.
[Ergebnisse] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Aber wenn Sie Geschäftsberichte nicht mit SQL Server Management Studio oder SQLCMD liefern müssen, ist dies NIE die richtige Lösung, auch wenn es möglich ist. Jede Front-End- oder Berichtsumgebung verfügt über geeignete Funktionen zur Handhabung der Anzeigeformatierung.