Per fortuna(?), in SQL Server 2012+ , ora puoi utilizzare FORMAT() per raggiungere questo obiettivo:
FORMAT(@s,'#,0.0000')
Nelle versioni precedenti, a rischio di sembrare davvero brutti
[Richiesta] :
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))
Nella prima parte, utilizziamo MONEY->VARCHAR per produrre le virgole, ma FLOOR() viene utilizzato per garantire che i decimali vadano a .00
. Questo è facilmente identificabile e sostituito con le 4 cifre dopo la cifra decimale utilizzando una combinazione di spostamento (*10000
) e CAST come INT (troncamento) per derivare le cifre.
[Risultati] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Tuttavia, a meno che non sia necessario fornire report aziendali utilizzando SQL Server Management Studio o SQLCMD, questo è MAI la soluzione corretta, anche se si può fare. Qualsiasi front-end o ambiente di reporting dispone delle funzioni appropriate per gestire la formattazione del display.