所謂【存儲過程】就是為了完成特定功能的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
===============
具體學習過程及參考試錯過程+實際數據+資料后面填坑。