2013-01-13 15 views
17

Ho un DB sqlite con una tabella con la seguente struttura LocationName Latitude Longitude tutte definite come varchar. Come posso costruire un'istruzione SQL per ottenere tutte le posizioni con uno specifico intervallo di lat data la latitudine in decimale. c'è un modo per farlo convertire da varchar a valore decimale al volo? o devo passare attraverso le dichiarazioni di reso e fare la conversione manualmentesqlite Converti testo in numeri

+1

SQLite supporta tipi diversi da varchar (testo) - http://www.sqlite.org/datatype3.html. Perché non memorizzare i valori nelle colonne reali? – xyzzycoder

+0

Sarebbe molto più efficiente memorizzare i valori come numeri effettivi nel database. – rmaddy

+0

Mi è stato dato il db in quel formatto che non posso cambiare. Vorrei poter :) – user519274

risposta

42

Vedere "Espressioni CAST" a http://www.sqlite.org/lang_expr.html.

SELECT CAST('3.02' as decimal) 
-- they aren't real decimals in sqlite, though. beware floats. 
+0

Oh grazie, darò una prova. Cosa succede se la colonna per latitudine, ad esempio, è definita come N320515. c'è un modo per fare lo stesso? – user519274

+0

c'è 'substr' per estrarre le sottostringhe e' case..when..end' per convertire 'N/S' in 1/-1. avrai un'espressione pelosa, ma è possibile. UPD: e assicurati di testare tutti i possibili emisferi :) –

+0

Grazie Ancora, scaverò di più su come creare quell'istruzione sql. – user519274