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

Làm cách nào để truy cập một cột HSTORE bằng thư viện PostgreSQL C (libpq)?

libpqtypes dường như có một số hỗ trợ cho hstore .

Một tùy chọn khác là tránh tương tác trực tiếp với hstore trong mã của bạn. Bạn vẫn có thể hưởng lợi từ nó trong cơ sở dữ liệu mà không cần xử lý biểu diễn văn bản của nó ở phía máy khách. Giả sử bạn muốn tìm nạp một trường hstore; bạn chỉ cần sử dụng:

SELECT t.id, k, v FROM thetable t, LATERAL each(t.hstorefield);

hoặc trên các phiên bản PostgreSQL cũ, bạn có thể sử dụng biểu mẫu set-return-function-in-SELECT kỳ quặc và không chuẩn:

SELECT t.id, each(t.hstorefield) FROM thetable t;

(nhưng hãy cẩn thận nếu chọn nhiều bản ghi từ t theo cách này, bạn sẽ nhận được kết quả kỳ lạ khi LATERAL sẽ ổn).

Một tùy chọn khác là sử dụng hstore_to_array hoặc hstore_to_matrix khi truy vấn, nếu bạn cảm thấy thoải mái khi xử lý biểu diễn mảng PostgreSQL.

Để tạo các giá trị hstore, bạn có thể sử dụng các hàm tạo hstore lấy mảng. Các mảng đó có thể lần lượt được tạo bằng array_agg trên VALUES nếu bạn không muốn đối phó với biểu diễn mảng của PostgreSQL trong mã của bạn.

Tất cả sự lộn xộn này sẽ biến mất trong tương lai, vì PostgreSQL 9.4 có khả năng tương tác tốt hơn nhiều giữa các loại hstore và json, cho phép bạn chỉ sử dụng biểu diễn json khi tương tác với hstore.




  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 phân tích cú pháp xml với các phần tử tùy chọn

  2. LOWER LIKE so với iLIKE

  3. Tham gia CTE trong SQLAlchemy

  4. Tính toán phần trăm chơi lại vào ngày hôm sau

  5. Cách triển khai một LMS canvas khả dụng cao với Cụm cơ sở dữ liệu PostgreSQL