在postgresql中更新Point的位置

时间:2014-12-18 15:30:29

标签: postgresql

我有一个功能

insertPoint(pt Point), 

在函数中,我想改变pt的值,即在函数let中,

pt.x:=pt.x+1.0

这不起作用。我尝试过很多东西,但没有运气。文档建议使用更新。我试过了:

        UPDATE POINT SET pt[0] = 2.0*pt.x;

再次,没有运气。

有人可以提供帮助。

1 个答案:

答案 0 :(得分:1)

PostgreSQL point不是一个复杂类型,因此您无法使用point.x / point.y等字段访问和/或设置其坐标。

相反,您可以使用下标来访问它们,例如数组:point[0]& point[1]

UPDATE <table> SET pt[0] = 2.0 * pt[0];

在PL / pgSQL中:

pt[0] := pt[0] + 1.0;

或者,您可以使用point(double precision, double precision)构造函数创建新的point实例:

UPDATE <table> SET pt = point(2.0 * pt[0], pt[1]);

在PL / pgSQL中:

pt := point(pt[0] + 1.0, pt[1]);

您可以访问lseg(线段)&amp;的成员类似地box(虽然它没有记录),但其他几何类型不允许使用SQLFiddle