2009-06-02 8 views
6

Group, Estoy seguro de que esto es un error de usuario de alguna manera, pero estoy tratando de DISTRIBUIR una columna de números de un float a varchar. Funciona muy bien para cualquier cosa con menos de 7 dígitos, pero si el número tiene 7 dígitos, lo convierte en notación científica o como lo llamen. Por ejemplo:CAST fundir float incorrectamente en varchar

440000 440000 pantallas 1.299.125 muestra 1.29913e + 006

Parece que es el redondeo números de 7 dígitos hasta ... que no estoy seguro de por qué.

Estoy tratando de convertirlo porque necesito concatenado a otros campos que son todos VARCHAR

Cualquier ayuda es muy apreciada

+0

Se puede publicar el SQL que está utilizando? Me parece recordar que si simplemente haces cast para varchar hay una longitud predeterminada para el varchar. Es posible que desee ver convertir en lugar de emitir. – Lazarus

+0

Aquí estaba mi SQL y CustomerNumber es un flotador CAST (número de cliente AS VARCHAR (15)) –

Respuesta

13

Envuelva su flotador dentro de la función str() que, cuando sólo se administra un parámetro, tiene el efecto secundario de dejar todo a la derecha del punto decimal.

Problema:

select cast(cast(1234567890.01 as float) as varchar) 

1.23457e+009 

respuesta sin decimales:

select str(cast(1234567890.01 as float)) 

1234567890 

respuesta con decimales:

select str(cast(1234567890.01 as float),13,2) 

1234567890.01 
+0

Aparentemente también tienen que hacer una LTRIM. – PeterX

2

select cast(cast(@float as decimal(13,2)) as varchar)