我目前必须检查我的查询并将它们转移到使用 Oracle 而不是 SQLSERVER 并且我有点卡住了我从这里使用的这个查询
SELECT TOP 1 * FROM ( SELECT o.outcode AS lead_postcode, v.location,
v.location_name, v.outcode AS venue_postcode, 6371.0E *
( 2.0E *asin(case when 1.0E < (sqrt(square(sin(((RADIANS(CAST(o.lat AS FLOAT)))-
(RADIANS(CAST(v.lat AS FLOAT))))/2.0E)) + (cos(RADIANS(CAST(v.lat AS FLOAT)))
* cos(RADIANS(CAST(o.lat AS FLOAT))) * square(sin(((RADIANS(CAST(o.lng AS FLOAT)))-
(RADIANS(CAST(v.lng AS FLOAT))))/2.0E))))) then 1.0E else
(sqrt(square(sin(((RADIANS(CAST(o.lat AS FLOAT)))-(RADIANS(CAST(v.lat AS FLOAT))))
/2.0E)) + (cos(RADIANS(CAST(v.lat AS FLOAT))) * cos(RADIANS(CAST(o.lat AS FLOAT)))
* square(sin(((RADIANS(CAST(o.lng AS FLOAT)))-(RADIANS(CAST(v.lng AS FLOAT))))
/2.0E))))) end )) AS distance FROM venue_postcodes v, uk_postcodes o
WHERE o.outcode = @nrpostcode ) i WHERE distance<100 ORDER BY distance
现在我知道这是一个可怕的查询,但 Oracle 似乎有很多问题。
首先它不喜欢E
in6371E
和所有后续E
的
其次,它不喜欢这个square
功能,所以我决定使用这个power
功能,但这仍然给了我错误。
第三,它不喜欢这个radians
功能
第四,它不喜欢这个TOP 1
部分,所以我将其更改为ROWNUM
在WHERE
子句中使用
我完全不知道在这里做什么。
关于我可以做些什么来让它发挥作用的任何想法?
提前致谢