无法在sql中创建用户定义的函数来计算距离

时间:2017-03-14 08:05:48

标签: mysql udf

大家好我正在尝试为有多个过滤器的餐馆创建高级搜索,供用户选择。其中一个将是他/她家和餐馆之间的距离。所以我想在sql中使用一个函数,它获得两个纬度和两个经度,并检查距离是否小于过滤器。

我在这里找到了一些解决方案,例如 Calculating distance between two points (Latitude, Longitude)但我无论如何都无法创造这个功能。我总是得到相同的错误“#1064 - 您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法”。我甚至尝试创建一个更简单的函数,如How to create a function in SQL Server,但我仍然得到相同的错误。我只需复制该函数并将其粘贴到我的服务器中即可在数据库上运行sql查询     有什么东西我不见了? (也许不再支持创建功能?) 提前感谢任何建议/答案。

1 个答案:

答案 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)')