2013-01-13 2 views
17

Ich habe eine SQL-DB mit einer Tabelle mit der folgenden Struktur: LocationName Latitude Longitude, die alle als varchar definiert sind. Wie kann ich eine SQL-Anweisung erstellen, um alle Standorte mit einem bestimmten Breitengrad zu erhalten, gegebener Breitengrad in Dezimal. Gibt es eine Möglichkeit, das von Varchar auf Dezimalwert im laufenden Betrieb zu konvertieren? oder ich muss Schritt für Schritt durch die Rückgabeanweisungen gehen und die Konvertierung manuell durchführensqlite Text in Zahlen umwandeln

+1

SQLite unterstützt andere Typen als varchar (text) - http://www.sqlite.org/datatype3.html. Warum speichern Sie die Werte nicht in echten Spalten? – xyzzycoder

+0

Es wäre weitaus effizienter, die Werte als tatsächliche Zahlen in der Datenbank zu speichern. – rmaddy

+0

Ich habe die db in diesem Format gegeben, das ich nicht ändern kann. Ich wünsche ich kann :) – user519274

Antwort

42

Siehe "CAST-Ausdrücke" unter 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 danke, ich werde das versuchen. Was ist, wenn die Spalte für den Breitengrad beispielsweise als N320515 definiert ist? Gibt es einen Weg, das Gleiche zu tun? – user519274

+0

gibt es 'substr', um Teilstrings zu extrahieren, und' case..when..end', um 'N/S' in 1/-1 zu konvertieren. Du wirst einen haarigen Ausdruck bekommen, aber es ist möglich. UPD: und stellen Sie sicher, auf allen möglichen Hemisphären zu testen :) –

+0

Danke Noch einmal, ich werde mehr darüber nachdenken, wie man diese SQL-Anweisung erstellt. – user519274