私は長いと緯度を与えられたときにデータベースからlocIdのリストを返すクエリを取得しようとしています。周辺地域SQL
は、ここにSQLです:
例:LAT = "-37.8333300":LON = "145.000000":半径=(* 0.621371192 5)^ 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
^ビットごとのXORです。http://stackoverflow.com/questions/5411619/t-sql-xor-operator – Jody
少なくとも例外があります。PostgreSQLは^と同じように扱います^ PostgreSQLの算術演算子についてウェブ上のあるページを読んだら、select 10^2 returns 100)。しかし、MySQLではありません。 SQL標準をチェックしました。 – huelbois
ありがとうHuelbois、そのトリックをした!更新された質問と回答 – Ben