2010-11-17 11 views
6

ich die folgende Abfrage in SQLite haben:Vergleichen Strings als Zahlen in SQLite3

SELECT * FROM t1 ORDER BY t1.field 

Wo t1.field eine Textspalte ist Zahlen enthält. Ist es möglich, SQLite zu zwingen, die Werte von t1.field als Zahlen anstelle von Strings zu betrachten (ohne ALTER TABLE)? Im Moment ist die Sortierung eine reine Zeichenfolge, also 10 geht vor 2.

Vielen Dank.

Antwort

16

Gut gefunden, eine Lösung:

SELECT * FROM t1 ORDER BY t1.field + 0 

Der + 0 Teil scheint Umwandlung zu zwingen

+0

zur Nummer danke diese mir geholfen, aus Interesse, auf welcher Plattform wurden Sie SQLite auf? –

+7

SELECT * FROM t1 ORDER VON CAST (t1.field AS INTEGER) –

+0

Sie können sogar gemischte Daten sortieren. Wenn Sie 'ORDER BY t1.field + 0, t1.field' verwenden, sortiert das zuerst alle Zahlen, dann alle Zeichenfolgen, die nicht in eine Zahl umgewandelt werden konnten ->' ["no", "yes", "1", "5", "10", 50 "]' – relet