Окрестности SQL - PullRequest
       0

Окрестности SQL

0 голосов
/ 01 февраля 2012

Я пытаюсь заставить работать запрос, который возвращает список locId из базы данных при подаче long и lat.

Вот 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

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Не уверен, какую базу данных вы используете, но я думаю, что «^ 2» в SQL не означает «квадрат», как в математике. Вам следует использовать математическую функцию «power», например, POWER (число, 2) в SQL Server (поскольку вы используете VB, может быть, вы используете SQL Server?)

1 голос
/ 01 февраля 2012

Вам нужно иметь два одинаковых типа данных. SQL думает, что «5» - это int. Таким образом, вы должны быть в состоянии обмануть его, рассматривая его как float, поставив вместо него «5.0».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...