2011-11-18 2 views

答えて

14

はい。しかし、値はテキストとして保存されるため、最初に適切なデータ型に値をキャストしなければなりません。したがって、インチの高さをインチ単位で合計すると、「その他」列のhstoreに格納されます

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

整数にキャストできない値が1行に含まれているとしたらどうなりますか?それは 'ERROR:整数のための無効な入力構文:'を与えるでしょうから、その行をスキップして望みの結果を得るには? – RockStar

+0

@RockStar:WHERE句と正規表現を使用してください: 'where(other - > 'height_in')〜 '^ \ d + $''。しかし、これを行う必要がアプリケーションコードのエラーを指しています。それを修正してください。 –

関連する問題