2011-11-18 21 views

Trả lời

14

Có. Nhưng các giá trị được lưu trữ dưới dạng văn bản, do đó bạn phải truyền chúng vào một kiểu dữ liệu thích hợp trước tiên. Vì vậy, để tính tổng chiều cao tính bằng inch, được lưu trữ trong một cửa hàng trong cột "khác"

CREATE TABLE my_table (
    id integer primary key, 
    other hstore 
); 
insert into my_table values 
(1, hstore('height_in', '72') || hstore('weight_lbs', '180')), 
(2, hstore('height_in', '65') || hstore('girth_in', '42')); 

select sum((other->'height_in')::integer) sum_of_height 
from my_table; 

sum_of_height 
-- 
137 
+0

Điều gì sẽ xảy ra nếu một hàng có giá trị không thể được nhập bằng số nguyên? Nó sẽ cung cấp cho 'LRI: cú pháp đầu vào không hợp lệ cho số nguyên:' vậy làm thế nào để có được kết quả mong muốn bằng cách bỏ qua hàng đó? – RockStar

+0

@RockStar: Sử dụng mệnh đề WHERE và cụm từ thông dụng: 'where (other -> 'height_in') ~ '^ \ d + $''. Tuy nhiên, cần phải thực hiện điều này để báo lỗi trong mã ứng dụng của bạn. Sửa lỗi đó. –

Các vấn đề liên quan