2010-11-17 14 views
6

Tengo la siguiente consulta en SQLite:comparar cadenas como números en SQLite3

SELECT * FROM t1 ORDER BY t1.field 

Dónde t1.field es una columna de texto que contenga números. ¿Es posible obligar a SQLite a considerar los valores de t1.field como números en lugar de cadenas (sin hacer ALTER TABLE)? En este momento, el género es de cadena pura, por lo que 10 va antes 2.

Gracias.

Respuesta

16

Bueno, se encontró una solución:

SELECT * FROM t1 ORDER BY t1.field + 0 

La parte + 0 parece forzar la conversión al número

+0

gracias Esto me ayudó, por interés en qué plataforma estaba usando SQLite? –

+7

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

+0

Incluso puede ordenar datos mixtos. Si usa 'ORDER BY t1.field + 0, t1.field', primero se ordenarán todos los números, luego todas las cadenas que no se pudieron convertir a un número ->' ["no", "yes", "1", "5", "10", 50 "]' – relet

Cuestiones relacionadas