2009-06-02 6 views
6

Groupe, Je suis sûr que c'est une erreur de l'utilisateur d'une manière ou d'une autre, mais j'essaie de CAST une colonne de nombres d'un flotteur à un varchar. Il fonctionne très bien pour n'importe quoi sous 7 chiffres, mais si le nombre est de 7 chiffres, il le transforme en notation scientifique ou quoi qu'ils appellent ça. Par exemple:CAST mal coulée float à varchar

440000 affiche 440000 1.299.125 affiche 1.29913e + 006

On dirait qu'il est arrondi 7 chiffres jusqu'à ... que je ne sais pas pourquoi.

Je suis en train de le convertir parce que je dois concaténé à d'autres domaines qui sont tous VARCHAR

Toute aide est grandement appréciée

+0

Pouvez-vous poster le SQL que vous utilisez? Je me souviens que si vous venez de convertir en varchar il y a une longueur par défaut pour le varchar. Vous pourriez vouloir regarder convert plutôt que cast. – Lazarus

+0

Ici était mon SQL et CustomerNumber est un flotteur CAST (CustomerNumber AS VARCHAR (15)) –

Répondre

13

Enveloppez votre flotteur dans la fonction str() qui, étant donné que un paramètre, a l'effet secondaire de déposer tout à la droite de la virgule décimale.

Problème:

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

1.23457e+009 

Réponse sans décimale:

select str(cast(1234567890.01 as float)) 

1234567890 

Réponse avec décimales:

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

1234567890.01 
+0

Apparemment, faire un LTRIM aussi bien. – PeterX

2

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