2013-01-13 58 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