PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách chia mảng thành các hàng trong Postgresql

Tôi khuyên bạn nên nâng cấp phiên bản Postgres của mình. Tất cả các phiên bản được hỗ trợ đều hỗ trợ unnest() :

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

Trong các phiên bản trước đó, bạn có thể cố gắng chọn ra từng cái một. Phần sau đã được thử nghiệm và hoạt động, mặc dù ở phiên bản 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. Cơ chế sao chép vật lý trong PostgreSQL

  2. Bạn sử dụng các biến script trong psql như thế nào?

  3. Làm sắc nét dữ liệu của bạn với PostgreSQL 11

  4. Cách tạo bảng Chỉ khi nó không tồn tại trong PostgreSQL

  5. Xóa một ổ đĩa đã đặt tên bằng docker-compile?