2009-08-21 5 views
1

Ich habe eine Spalte namens Preis und alle Werte sind TEXT so wie folgt: "$ 26,71". Ich möchte diese Spalte in absteigender Reihenfolge sortieren, aber ich kann nicht, weil die Spalte nicht als INTEGER definiert ist und es ein "$" Zeichen vor allen Werten hat. Was soll ich tun, damit dies funktioniert? Danke.SQLite Sortierung nach Preis funktioniert nicht

Antwort

5

Sie ltrim kombinieren und cast einen tatsächlichen numerischen zu erhalten, von dem sortieren nach:

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

Hinweis, ltrim funktioniert auch, wenn Sie mehrere Währungen haben. Ordnen Sie sie alle zusammen, wie '$€'. ltrim entfernt alle Zeichen von der linken Seite, bis ein Zeichen gefunden wird, das nicht in dieser Zeichenfolge enthalten ist.

2

Mehmet, Idealerweise sollten Sie die Preise als Währung/dezimalen/numerischen Datentyp speichern und das "$" auf der Benutzeroberfläche anhängen. Erics Lösung wird für Ihr unmittelbares Problem funktionieren, aber wenn Ihr System wächst, wird die Leistung dieser Auswahl immer schlechter.