Afortunadamente (?), en SQL Server 2012+ , ahora puede usar FORMAT() para lograr esto:
FORMAT(@s,'#,0.0000')
En versiones anteriores, a riesgo de parecer realmente feo
[Consulta] :
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))
En la primera parte, usamos MONEY->VARCHAR para producir las comas, pero FLOOR() se usa para asegurar que los decimales vayan a .00
. Esto es fácilmente identificable y se reemplaza con los 4 dígitos después del lugar decimal usando una combinación de cambios (*10000
) y CAST como INT (truncamiento) para derivar los dígitos.
[Resultados] :
| COLUMN_0 |
--------------
| 1,234.1235 |
Pero, a menos que tenga que entregar informes comerciales mediante SQL Server Management Studio o SQLCMD, esto es NUNCA. la solución correcta, incluso si se puede hacer. Cualquier entorno de front-end o de generación de informes tiene funciones adecuadas para manejar el formato de visualización.