0

我在 plpgsql 中有以下查询:

FOR _t IN EXECUTE 'select distinct_network_point.id AS network_point_id
           from distinct_network_point, all_points_ordered
           where road_id='||road_id||' AND distinct_network_point.point = all_points_ordered.point AND all_points_ordered.point != st_setsrid(st_makepoint('||new_point||'),4326)
           order by st_distance(all_points_ordered.point,st_setsrid(st_makepoint('||new_point||'),4326))
           limit 1'

对于某些人来说,它给了我以下错误:

在此处输入图像描述

如果我使用这个 <> 运算符,它会给我这个比:

在此处输入图像描述

谁能解释它的真正含义?该查询在 sql 中运行良好。

4

1 回答 1

1

由于您正在处理几何类型,因此!=or<>运算符均无效。

相反,请参阅以下几何运算符列表。

在这种情况下,由于您要检查两个点是否不相同,我相信您可以使用运算符之间的距离<->, 并检查您的两个点之间的距离是否大于某种非常小的 epsilon 值。

就像是:

AND all_points_ordered.point <-> st_setsrid(st_makepoint('||new_point||'),4326) > 0.0001
于 2013-03-07T23:02:54.107 回答