2013-01-24 18 views
7

Ich habe ein Problem mit meiner Abfrage, als ich versuchte, das Varchar-Feld in Double (numerisch) zu konvertieren. Ich habe diese SQL-Anweisung:Wie Varchar zu Double in SQL konvertieren?

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

Eigentlich will ich in absteigender Reihenfolge die Werte von totalBal anzuzeigen. Aber da dieses Feld in Varchar ist, ist das Resultset manchmal falsch. Dies ist das Resultset als ich versuchte, diese Aussage zu Abfrage verwenden:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

Resultset ist:

enter image description here

Die Sortierung von totalBal nicht korrekt ist. Also habe ich beschlossen, den Varchar in numerisch zu konvertieren, damit er perfekt sortiert werden kann. Irgendeine Idee?

Antwort

16

Verwenden Sie DECIMAL() oder NUMERIC(), da sie feste Präzisions- und Maßstabszahlen sind.

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

Danke für diese Idee ... der Code mit dieser aktualisiert ... SELECT fullname, CAST (totalBal AS DECIMAL (9, 2)) AS totBal FROM client_info ORDER BY totBAL DESC' –

+0

gern geschehen ': D' –

0

Dies könnte wünschenswert sein, ist, dass die Verwendung Schwimmer statt

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

" CAST as float "ist in MySQL nicht gültig. Das funktioniert also überhaupt nicht. – m4ttsson