大家好我正在尝试为有多个过滤器的餐馆创建高级搜索,供用户选择。其中一个将是他/她家和餐馆之间的距离。所以我想在sql中使用一个函数,它获得两个纬度和两个经度,并检查距离是否小于过滤器。
我在这里找到了一些解决方案,例如 Calculating distance between two points (Latitude, Longitude)但我无论如何都无法创造这个功能。我总是得到相同的错误“#1064 - 您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法”。我甚至尝试创建一个更简单的函数,如How to create a function in SQL Server,但我仍然得到相同的错误。我只需复制该函数并将其粘贴到我的服务器中即可在数据库上运行sql查询 有什么东西我不见了? (也许不再支持创建功能?) 提前感谢任何建议/答案。
答案 0 :(得分:0)
根据您的标记sql-server
,您应该能够创建如下所示的函数来返回SQL Server中的距离。
CREATE FUNCTION fnGetDistance(@source geography, @target geography)
RETURNS FLOAT
AS
BEGIN
RETURN @source.STDistance(@target)
END
然后你可以调用函数来获得两点之间的距离。
SELECT [dbo].[fnGetDistance] ('POINT(0 51.5)', 'POINT(-3 56)')