2013-01-24 10 views
7

Ho un problema con la mia query quando stavo cercando di convertire il campo varchar in double (numerico). Ho questa istruzione SQL:Come convertire Varchar in Double in sql?

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

In realtà voglio visualizzare i valori delle totalBal in ordine decrescente. Ma dal momento che quel campo è in varchar, il resultet a volte è sbagliato. Questo è il gruppo di risultati quando ho provato a interrogare con questa dichiarazione:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

di risultati è:

enter image description here

L'ordinamento di totalBal non è corretto. Così ho deciso di convertire il varchar in numerico in modo che potesse essere ordinato perfettamente. Qualche idea?

risposta

16

utilizzare DECIMAL() o NUMERIC() in quanto sono fissi precisione e numeri di scala.

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

Grazie per questa idea ... aggiornato il codice con questo ... 'Seleziona fullName, CAST (totalBal AS DECIMAL (9, 2)) ASTBAL DA client_info ORDINA DA DESCRIZIONE totBal –

+0

prego: 'D' –

0

Questo potrebbe essere più desiderabile, cioè l'uso del galleggiante invece

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

"CAST come float" non è valido in MySQL. Quindi questo non funziona affatto. – m4ttsson