2009-06-02 11 views
6

Gruppo, Sono sicuro che si tratta di un errore utente in qualche modo, ma sto provando a CAST una colonna di numeri da un float a un varchar. Funziona benissimo per qualsiasi cosa con meno di 7 cifre, ma se il numero è di 7 cifre lo trasforma in notazione scientifica o come mai lo chiamano. Per esempio:CAST erroneamente lanciato float su varchar

440000 visualizzazioni 440000 1.299.125 visualizzazioni 1.29913e + 006

Assomiglia esso è arrotondamento 7 numeri a due cifre fino ... che io non so perché.

Sto cercando di convertirlo perché ho bisogno di concatenato ad altri campi che sono tutti VARCHAR

Qualsiasi aiuto è molto apprezzato

+0

potete inserire il codice SQL che si sta utilizzando? Mi sembra di ricordare che se si esegue il cast su varchar esiste una lunghezza predefinita per il varchar. Potresti voler convertire piuttosto che il cast. – Lazarus

+0

Ecco il mio SQL e CustomerNumber è un float CAST (CustomerNumber AS VARCHAR (15)) –

risposta

13

Avvolgere il galleggiante all'interno della funzione str() che, una volta dato solo un parametro, ha l'effetto collaterale di eliminare tutto a destra del punto decimale.

Problema:

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

1.23457e+009 

risposta senza decimali:

select str(cast(1234567890.01 as float)) 

1234567890 

Risposta con decimali:

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

1234567890.01 
+0

Sembra che debba fare anche un LTRIM. – PeterX

2

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

Problemi correlati