Na szczęście (?), w SQL Server 2012+ , możesz teraz używać FORMAT() aby to osiągnąć:
FORMAT(@s,'#,0.0000')
W poprzednich wersjach, ryzykując, że będziesz wyglądać naprawdę brzydko
[Zapytanie] :
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))
W pierwszej części używamy MONEY->VARCHAR do tworzenia przecinków, ale FLOOR() służy do zapewnienia, że ułamki dziesiętne idą do .00
. Jest to łatwe do zidentyfikowania i zastąpione 4 cyframi po miejscu dziesiętnym za pomocą kombinacji przesunięcia (*10000
) i CAST jako INT (obcięcie), aby uzyskać cyfry.
[Wyniki] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Ale jeśli nie musisz dostarczać raportów biznesowych za pomocą SQL Server Management Studio lub SQLCMD, jest to NIGDY właściwe rozwiązanie, nawet jeśli można to zrobić. Każdy interfejs lub środowisko raportowania ma odpowiednie funkcje do obsługi formatowania wyświetlania.