Solución:
Intente usar el STR()
función.
SELECT STR(float_field, 25, 5)
Función STR ()
Otra nota: esta almohadilla a la izquierda con espacios. Si esto es un problema, combine con LTRIM
:
SELECT LTRIM(STR(float_field, 25, 5))
El único bit de consulta que encontré que devuelve el mismo número original EXACTO es
CONVERT (VARCHAR(50), float_field,128)
Consulte http://www.connectsql.com/2011/04/normal-0-microsoftinternetexplorer4.html
Las otras soluciones anteriores a veces redondearán o agregarán dígitos al final
ACTUALIZAR: Según los comentarios a continuación y lo que puedo ver en https://msdn.microsoft.com/en-us/library/ms187928.aspx:
CONVERT (VARCHAR(50), float_field,3)
Debe usarse en nuevas versiones de SQL Server (Azure SQL Database, y comenzando en SQL Server 2016 RC3)
esta es la solución que terminé usando en sqlserver 2012 (ya que todas las otras sugerencias tenían el inconveniente de truncar la parte fraccionaria o algún otro inconveniente).
declare @float float = 1000000000.1234;
select format(@float, N'#.##############################');
producción:
1000000000.1234
esto tiene la ventaja adicional (en mi caso) de facilitar el separador de miles y la localización:
select format(@float, N'#,##0.##########', 'de-DE');
producción:
1.000.000.000,1234