所谓【存储过程】就是为了完成特定功能的SQL 语句集,存储在数据库中保存成【函数】,以方便使用。
在工作中有一个需求:
原数据项有一个字段叫做“geo”的保存若干xy坐标对的一维数组,类型为text[],数组长度length,每一条数据text[]的length的范围在128-1520,
现在想对这些xy坐标点进行抽稀,只取下标为1,9,17,25...也就是说下标n能被8除余数为1的数组成员。这样可以保持取的数据间隔相等,且相对位置不变。
create function selectpoint(geos text[])
returns text[] as
$$
declare
newgeo text[];
arr text[];
begin
arr := selectpoint.geos;
length := array_length(arr,1);
for i in 1..length loop
if i%8= 1 then
arr_append(newgeo,arr[i]);
end if;
end loop;
return newgeo;
end
$$
language plpgsql;
函数引用:
select selectpoint(t.geo) as selectpoints from geoarray t
===============
具体学习过程及参考试错过程+实际数据+资料后面填坑。