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.