PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Създаване на низ от масив

можете да комбинирате множество операции като generate_subscripts и array, за да получите резултата:

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]
  ), '->'
) ;

пример на живо Sqlfiddle

или използвайте външно съединяване в комбинация с което и да е:

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

пример на живо Sqlfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Първоначална конфигурация на Postgresql:Как да осъществите достъп като потребител на postgres?

  2. Postgres не връща правилно lastval().

  3. Не може да се конфигурира AspNet.Identity с помощта на PostgreSQL

  4. Свържете се като потребител без зададена парола на Postgresql 8.4 чрез JDBC

  5. PostgreSQL проверява елемент на предишен запис