比较操作员错误

时间:2013-03-07 22:41:16

标签: sql function postgresql plpgsql

我在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'

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

enter image description here

如果我使用此<>运营商它会给我这个:

enter image description here

任何人都可以解释它的真正含义吗?该查询在sql中正常工作。

1 个答案:

答案 0 :(得分:1)

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

Instead, please refer to the following list of geometric operators.

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

类似的东西:

AND all_points_ordered.point <-> st_setsrid(st_makepoint('||new_point||'),4326) > 0.0001