2009-08-21 15 views
1

J'ai une colonne appelée prix et toutes les valeurs sont TEXT ainsi: "$ 26.71". Je veux trier cette colonne dans l'ordre décroissant mais je ne peux pas parce que la colonne n'est pas définie comme INTEGER et il a un caractère "$" devant toutes les valeurs. Que dois-je faire pour que cela fonctionne? Merci.SQLite trier par prix ne fonctionne pas

Répondre

5

Vous pouvez combiner ltrim et cast pour obtenir une réelle numérique à partir de laquelle trier par:

select * from table order by cast(ltrim(price, '$') as numeric) desc 

Remarque, ltrim fonctionne aussi si vous avez plusieurs devises. Juste les aligner tous, comme '$€'. ltrim supprime tous les caractères du côté gauche jusqu'à ce qu'il frappe un caractère qui n'est pas dans cette chaîne.

2

Mehmet, Idéalement, vous devriez stocker les prix en tant que type de données monétaire/décimal/numérique et ajouter le "$" sur l'interface utilisateur. La solution d'Eric fonctionnera pour votre problème immédiat, mais à mesure que votre système se développe, les performances de ces sélections vont empirer.