【问题标题】:Surrounding Areas SQL周边地区 SQL
【发布时间】:2012-02-23 18:06:54
【问题描述】:

我正在尝试执行一个查询,当输入一个 long 和一个 lat 时,它会从数据库中返回一个 locId 列表。

这是 sql:

例如:lat = "-37.8333300" : lon = "145.000000" : radius = (5 * 0.621371192) ^ 2

SELECT locId,longitude,latitude FROM tbliplocations WHERE (69.1*([longitude]- "&lon&") * cos("&lat&"/57.3))^2 + (69.1*([latitude]- "&lat&"))^2 < "&radius

这是我收到的错误:

数据类型 float 和 int 在 '^' 运算符中不兼容。

我不确定解决方法,谁能指出正确的方向?

答案:

使用 SQL Server 2008 R2

SELECT city FROM tbliplocationsnew WHERE POWER((69.1*([longitude]- "&lon&") * cos("&lat&"/57.3)),2) + POWER((69.1*([latitude]- "&lat&")),2)  < "&radius

【问题讨论】:

    标签: sql vbscript latitude-longitude


    【解决方案1】:

    你需要有两个相同的数据类型。 SQL 认为“5”是一个 int。因此,您应该能够通过输入“5.0”来欺骗它以将其视为浮点数。

    【讨论】:

      【解决方案2】:

      不确定您使用的是什么数据库,但我认为 SQL 中的“^2”并不像数学中那样表示“平方”。您应该使用数学“幂”函数,例如 SQL Server 中的 POWER(number,2) (因为您使用 VB,也许您使用 SQL Server ?)

      【讨论】:

      • 至少有一个例外:PostgreSQL 将 ^ 视为它看起来的幂函数(刚刚安装了一个并检查了,在阅读了网上一些关于 PostgreSQL 中的算术运算符的页面后:选择 10 ^2 返回 100) .但不是 MySQL。必须检查 SQL 标准。
      • 感谢 Huelbois,成功了!用答案更新问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 2012-08-24
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多