sql >> Databasteknik >  >> RDS >> PostgreSQL

Skapa sträng från array

du kan kombinera flera operationer som generation_subscripts och array för att få resultatet:

with mtab as (
      SELECT id, name, array_append(arrayofparents,id) as arrayofparents,
      generate_subscripts(array_append(arrayofparents, id), 1) AS p_id FROM tab where id=2
)
select distinct array_to_string(
  array(
    select tab.name from tab join mtab t on tab.id=t.arrayofparents[t.p_id]
  ), '->'
) ;

liveexempel Sqlfiddle

eller använd yttre sammanfogning i kombination med någon:

SELECT coalesce(string_agg(p.name, '->') || '->' || t.name, t.name) AS parentnames
FROM tab AS t
  LEFT JOIN tab AS p ON p.id = ANY(t.arrayofparents)
 where t.id =7 
GROUP BY t.id, t.name

liveexempel Sqlfiddle



  1. Fel vid användning av anpassad DQL-funktion med Doctrine och Symfony2

  2. Motsvarar beskriv tabellen i PgAdmin3

  3. Hur man installerar PostgreSQL-klientbibliotek för PHP på Windows med SSL aktiverat

  4. Databassäkerhet - Backup-kryptering under transport och i vila