2017-04-21 86 views
0

我有一個屬性值表,如下所示,我知道只有一個* _value字段將包含一個值,其他將爲NULL。從postgres中的不同類型的列中選擇非空值

什麼是最有效的方法來選擇列的值只有非空?

我已經試過

SELECT property_id, COALESCE(int_value, str_value, etc) 

但是,這並不工作,因爲它們是不同的列類型,同樣有NULLIF。我可以投出所有的值,但我不想丟失值類型。

property_values 
----------------------------------------------- 
property_id  | integer 
int_value  | integer 
str_value  | character varying 
time_value  | timestamp without time zone 
txt_value  | text 
dec_value  | numeric 
bool_value  | boolean 
json_value  | jsonb 

回答

0

這是太長的評論。

你至少「合理地」不能做你想做的事。正如你注意到的,coalesce()由於類型衝突而不起作用。這接近問題的根源:結果集中的列必須具有特定的類型。

那麼,你想要什麼類型的結果?你可以決定一個「通用」類型,比如一個字符串。我不確定這對你的用例是一個好主意。

相關問題