Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server formatiert Dezimalstellen mit Kommas

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.