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

Как да разделя масива на редове в Postgresql

Предлагам ви да надстроите вашата версия на Postgres. Всички поддържани версии поддържат unnest() :

SELECT x.*
FROM (SELECT id, UNNEST(selected_placements) as selected_placement
      FROM  app_data.content_cards
     ) x
WHERE selected_placement IS NOT NULL;

В по-ранните версии можете да се стремите да ги избирате един по един. Следното е тествано и работи, макар и в 9.5:

with content_cards as (
     select 1 as id, array['a', 'b', 'c'] as selected_placements
    )
SELECT id, selected_placements[num] as selected_placement
FROM (SELECT cc.*, generate_series(1, ccup.maxup) as num
      FROM content_cards cc CROSS JOIN
           (SELECT MAX(ARRAY_UPPER(cc.selected_placements, 1)) as maxup
            FROM content_cards cc
           ) ccup
     ) x
WHERE selected_placements[num]  IS NOT NULL;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (var)char като типа на колоната за изпълнение?

  2. Намерете името на хоста в postgresql

  3. Django Postgres ArrayField срещу връзка "един към много".

  4. High Sierra + Python + Postgresql грешка:Незаконна инструкция:4

  5. Разплитане на надстройката на PostgreSQL