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:
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?
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
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