web-dev-qa-db-fra.com

Comment convertir Varchar en Double in sql?

J'ai un problème avec ma requête lorsque j'essayais de convertir le champ varchar en double (numérique). J'ai cette déclaration SQL:

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

En fait, je souhaite afficher les valeurs de totalBal par ordre décroissant. Mais puisque ce champ est dans varchar, le résultat est parfois faux. Voici le résultat lorsque j'ai essayé d'interroger à l'aide de cette instruction:

SELECT fullName, totalBal FROM client_info ORDER BY totalBal DESC 

Resultset est:

enter image description here

Le tri de totalBal n'est pas correct. J'ai donc décidé de convertir le varchar en numérique afin qu'il puisse être trié parfaitement. Une idée?

10
Jay Marz

utilisez DECIMAL() ou NUMERIC() car il s'agit de numéros de précision et d'échelle fixes. 

SELECT fullName, 
       CAST(totalBal as DECIMAL(9,2)) _totalBal
FROM client_info 
ORDER BY _totalBal DESC
21
John Woo

Cela pourrait être plus souhaitable, c'est utiliser float à la place 

SELECT fullName, CAST(totalBal as float) totalBal FROM client_info ORDER BY totalBal DESC
0
Hammad Khan