2013-01-24 12 views
7

Mam problem z moim zapytaniem, gdy próbowałem przekonwertować pole varchar na podwójne (numeryczne). Mam tę instrukcję SQL:Jak przekonwertować Varchar na Double w sql?

SELECT fullName, CAST(totalBal as numeric(9,2) FROM client_info ORDER BY totalBal DESC 

Właściwie chcę, aby wyświetlić wartości totalBal w kolejności malejącej. Ale ponieważ to pole jest w varcharze, wynik jest czasami błędny. To resultset gdy próbowałem do kwerendy za pomocą tego komunikatu:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

wynikowego jest:

enter image description here

Sortowanie totalBal nie jest poprawna. Postanowiłem więc przekonwertować varchar na numeryczny, aby mógł być idealnie posortowany. Dowolny pomysł?

Odpowiedz

16

użyć DECIMAL() lub NUMERIC() ponieważ mają one stałą precyzję i numery skali.

SELECT fullName, 
     CAST(totalBal as DECIMAL(9,2)) _totalBal 
FROM client_info 
ORDER BY _totalBal DESC 
+0

Dziękuję za ten pomysł ... uaktualniony kod z tym ... 'SELECT fullname, odlewane (totalBal dziesiętny (9, 2)) AS totBal FROM client_info ORDER BY totBal DESC' –

+0

Nie ma za co. ': D' –

0

To może być bardziej pożądane, że pływak jest użycie zamiast

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC 
+3

" CAST as float "nie jest poprawny w MySQL. To w ogóle nie działa. – m4ttsson

Powiązane problemy