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

Mảng đa chiều PostgreSQL

Postgres mảng phần tử luôn là phần tử cơ sở , tức là vô hướng các giá trị. Mảng con không phải là "phần tử" trong Postgres. Các lát mảng giữ lại kích thước ban đầu.

Bạn có thể trích xuất phần tử cơ sở , là một giá trị của kiểu dữ liệu phần tử vô hướng.
Hoặc bạn có thể trích xuất một lát mảng , giữ lại kiểu dữ liệu mảng ban đầu và cả kích thước mảng ban đầu.

Ý tưởng của bạn để truy xuất mảng con dưới dạng "phần tử" sẽ xung đột với mảng đó và không được triển khai.

Hướng dẫn sử dụng có thể rõ ràng hơn trong phần giải thích. Nhưng ít nhất chúng ta có thể tìm thấy:

Ví dụ đầu tiên của bạn cố gắng tham chiếu đến một phần tử cơ sở, phần tử này không được tìm thấy (bạn cần hai chỉ mục mảng trong một mảng 2-D). Vì vậy, Postgres trả về NULL.
Ví dụ thứ 3 của bạn chỉ cần bao bọc kết quả NULL trong một mảng mới.

Để làm phẳng một lát mảng (biến nó thành mảng 1-D) bạn có thể unnest() và cung cấp tập hợp kết quả thành ARRAY phương thức khởi tạo . Trong một truy vấn con tương quan hoặc trong một LATERAL tham gia (yêu cầu pg 9.3+). Thể hiện cả hai:

SELECT s.col[2:2][2:3] AS slice_arr
     , x.lateral_arr
     , ARRAY(SELECT unnest(s.col[2:2][2:3])) AS corr_arr
FROM  (SELECT ARRAY[[1,2,3],[4,5,6]] AS col) s
     , LATERAL (SELECT ARRAY(SELECT * FROM unnest(s.col[2:2][2:3])) AS lateral_arr) x;

Và hãy nhớ đọc phiên bản hiện tại của hướng dẫn này . các tham chiếu của bạn trỏ đến Postgres 9.1, nhưng rất có thể bạn đang thực sự sử dụng Postgres 9.4.

Có liên quan:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dấu thời gian postgres now () không thay đổi khi tập lệnh hoạt động

  2. Ghi nhật ký Stacktrace của Trình thông dịch Python hiện tại thông qua trình kích hoạt PostgreSQL

  3. Hibernate 3.3.2GA tải không đúng dữ liệu bytea từ PostgreSQL 9.0 và tất cả các ánh xạ loại đều đúng

  4. Tìm các hàng có phạm vi ngày hoãn lại và tích lũy thời lượng của chúng

  5. Cách thích hợp để thêm văn bản chưa thoát từ một trường vào regex trong postgres?