sql >> Base de Datos >  >> RDS >> Sqlserver

Formato de SQL Server lugares decimales con comas

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.