2010-11-17 18 views
6

Ho la seguente query in SQLite:confrontare le stringhe come numeri in SQLite3

SELECT * FROM t1 ORDER BY t1.field 

Dove t1.field è una colonna di testo contenente i numeri. È possibile forzare SQLite a considerare i valori di t1.field come numeri invece di stringhe (senza fare ALTER TABLE)? In questo momento l'ordinamento è uno string puro, quindi 10 precede 2.

Grazie.

risposta

16

Beh, trovato una soluzione:

SELECT * FROM t1 ORDER BY t1.field + 0 

La parte + 0 sembra forzare la conversione al numero

+0

ringrazio Questo mi ha aiutato, per interesse su quello che la piattaforma era in uso al SQLite? –

+7

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

+0

È anche possibile ordinare dati misti. Se si utilizza 'ORDER BY t1.field + 0, t1.field', questo prima ordinerà tutti i numeri, quindi tutte le stringhe che non possono essere convertite in un numero ->' ["no", "yes", "1", "5", "10", 50 "]' – relet

Problemi correlati