2009-06-02 13 views
6

Grupa, Jestem pewien, że to jakis błąd użytkownika, ale próbuję CAST kolumny liczb od float do varchar. Działa doskonale dla wszystkiego, co ma mniej niż 7 cyfr, ale jeśli liczba ma 7 cyfr, zmienia ją w notację naukową lub jakkolwiek to nazywają. Na przykład:CAST niepoprawnie rzucający float do varchar

440000 wyświetla 440000 1299125 wyświetlacze 1.29913e + 006

Wygląda na to, że jest zaokrąglenie 7 liczb cyfr w górę ... co nie jestem pewien dlaczego.

próbuję ją przekonwertować bo trzeba złączyć go do innych dziedzin, które są wszystkie VARCHAR

Każda pomoc jest mile widziana

+0

możesz pisać SQL używasz? Wydaje mi się, że pamiętam, że jeśli po prostu rzucisz na varchar, domyślna długość będzie dla varchara. Możesz spojrzeć na konwersję zamiast rzucać. – Lazarus

+0

Tutaj był mój SQL i CustomerNumber jest float CAST (CustomerNumber AS VARCHAR (15)) –

Odpowiedz

13

Owiń pływaka w funkcji str(), które, gdy dany tylko jeden parametr, ma efekt uboczny zrzucania wszystkiego na prawo od przecinka dziesiętnego.

Problem:

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

1.23457e+009 

odpowiedzi bez dziesiętnych:

select str(cast(1234567890.01 as float)) 

1234567890 

Odpowiedź z przecinku:

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

1234567890.01 
+0

Pozornie również do wykonania LTRIM. – PeterX

2

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