convertir float en varchar en SQL server sin notación científica

convierta float en varchar en SQL Server sin notación científica y recorte de decimales.

por ejemplo:

Tengo el valor flotante 1000.2324422 , luego se convertiría en varchar como el mismo 1000.2324422 .

habría cualquier número de valores decimales … el valor flotante viene aleatoriamente.

Fundir o convertir a VARCHAR(MAX) o cualquier otra cosa no funcionó para mí usando enteros grandes (en campos flotantes) como 167382981, que siempre salió como ‘1.67383e + 008’.

Lo que funcionó fue STR() .

Ni str() ni cast(float as nvarchar(18)) me funcionaron.

Lo que terminó funcionando fue convertirlo a un int y luego convertirlo a un nvarchar como ese:

  convert(nvarchar(18),convert(bigint,float)) 

La función STR funciona bien. Flotante volví después de hacer algunos cálculos y necesitaba cambiar a VARCHAR, pero también recibía notación científica randonly. Hice esta transformación después de todos los calcs

  ltrim(rtrim(str(someField))) 

Pruebe CAST(CAST(@value AS bigint) AS varchar)

Esto no es relevante en este caso particular debido a los decimales, pero puede ayudar a las personas que buscan el título en google. Los campos enteros se convierten bien en varchars, pero los flotantes cambian a notación científica. Una manera muy rápida de cambiar un flotante rápidamente si no tienes decimales es, por lo tanto, cambiar el campo primero a un entero y luego cambiarlo a varchar.

Esto funciona CONVERT(VARCHAR(100), CONVERT(DECIMAL(30, 15), fieldname))

Prueba esto:

 SELECT REPLACE(RTRIM(REPLACE(REPLACE(RTRIM(REPLACE(CAST(CAST(YOUR_FLOAT_COLUMN_NAME AS DECIMAL(18,9)) AS VARCHAR(20)),'0',' ')),' ','0'),'.',' ')),' ','.') FROM YOUR_TABLE_NAME 
  1. Casting como DECIMAL pondrá punto decimal en cada valor, ya sea que haya tenido uno antes o no.
  2. Casting como VARCHAR le permite usar la función REPLACE
  3. Primero SUSTITUIR los ceros con espacios, luego RTRIM para deshacerse de todos los espacios finales (anteriormente ceros), luego REEMPLAZAR los espacios restantes con ceros.
  4. Luego haga lo mismo durante el período para deshacerse de él para los números sin valores decimales.

http://bytes.com/topic/sql-server/answers/80603-formatting-float-varchar-but-not-scientific-notation

ayuda hasta 8 bytes de figura en el rango (-922,337,203,685,477.5808 a 922,337,203,685,477.5807)