J'essaye de concevoir une fonction pour résoudre ce problème. J'ai une colonne avec des villes qui ressemble à ceci.Fonction d'extraction d'éléments de tableau dans différentes colonnes postgresql
1 |Curaçao-Amsterdam
2 |St. Christopher-Essequibo
3 |Texel-Riohacha-Buenos Aires-La Rochelle`
Et je l'ai utilisé cette requête pour extraire un ensemble d'éléments
select t2.rut1,t2.rutacompleta, t2.id
from (
select regexp_split_to_array(t.rutacompleta, E'[\-]+') as rut1,
t.rutacompleta,t.id
from (
select id, strpos(ruta, '-') as posinic, strpos(ruta, '-') as posfin,
ruta as rutacompleta
from dyncoopnet.todosnavios2
) t
) t2
qui donne ce résultat:
{Curaçao,Amsterdam} {"St. Christopher",Essequibo} {Texel,Riohacha,"Buenos Aires","La Rochelle"}`
Et je veux créer un fonction pour extraire * éléments de tableau à des colonnes différentes. Je l'ai pensé à une fonction tout comme ceci:
create or replace function extractpuertos()
returns text as
$body$
declare
i integer;
puerto text;
begin
i := 1
while (i >=1)
loop
with tv as(
select t2.rut1,t2.rutacompleta, t2.id from(
select regexp_split_to_array(t.rutacompleta, E'[\-]+') as rut1,
t.rutacompleta,t.id from(
select id, strpos(ruta, '-') as posinic, strpos(ruta, '-') as posfin,ruta as
rutacompleta from dyncoopnet.todosnavios2) t)t2
)
select tv.rut1[i] as puerto from tv;
end loop;
return puerto;
end;
Mais je ne suis pas sûr que c'est une bonne solution, et la façon de le mettre en œuvre. Un indice? Merci d'avance!
"extra ct * éléments de tableau à différentes colonnes "? .. voulez-vous dire un nombre dynamique de colonne? .. –
pourquoi pas' string_to_array (rutacompleta, '-') '? .. –