2013-01-13 59 views
17

我有一個帶有以下結構的表格的sqlite數據庫LocationName緯度經度都定義爲varchar。我如何構建一個sql語句來獲取具有給定緯度範圍的特定緯度範圍的所有位置。有沒有辦法做到即時從varchar轉換爲十進制值?或者我必須通過退貨聲明並手動進行轉換sqlite將文本轉換爲數字

+1

SQLite支持varchar(text)以外的類型 - http://www.sqlite.org/datatype3.html。爲什麼不將值存儲在實際列中? – xyzzycoder

+0

將數值作爲實際數字存儲在數據庫中會更有效率。 – rmaddy

+0

我已經給了那個甲酸的db我不能改變。希望我可以:) – user519274

回答

42

請參閱「CAST表達式」,地址爲http://www.sqlite.org/lang_expr.html

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

哦,謝謝,我會給那一個嘗試。如果緯度列例如定義爲N320515會怎麼樣?有沒有辦法做同樣的事情? – user519274

+0

有'substr'提取子字符串,'case..when..end'將'N/S'轉換爲1/-1。你會得到一個毛茸茸的表情,但這是可能的。 UPD:並確保在所有可能的半球上進行測試:) –

+0

再次感謝,我將深入探討如何創建該sql語句。 – user519274