2016-09-04 5 views
1

これに続いて、questionは、int値に対しても同じようにエレガントにする方法があるかどうか疑問に思っていました。postgresqlでint列を列挙型にアップグレードする

より正確には、固定数の値(必ずしも連続している必要はありません)を持つInteger列が与えられている場合、各数値を各列挙値にどのようにマッピングすればよいでしょうか。

、のは言わせ
0 -> 'sad' 
1 -> 'ok' 
10 -> 'happy' 

: がenum我々はマッピングしたいas

CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy'); 

であると仮定しましょう:私はマップを言うとき、私は、例えば移行

を意味します値{0,1,10}のみの気分と呼ばれる列を含むテーブルがあります。

また、回答hereが私に役立つことがわかりません。

私はUSING句が値を変換する方法のPostgreSQLを伝えるための表現ではPostgres 9.5

答えて

3

を使用しています。これは、SELECTと同じような表現です。したがって、マッピングを指定する必要がある場合は、CASEステートメントだけを使用できます。

alter table foo 
    alter bar type mood 
    using 
    case bar 
     when 0 then 'sad' 
     when 1 then 'ok' 
     when 10 then 'happy' 
    end :: mood; 
+0

awesome!働いて、十分に簡単です:)ありがとう – Yaneeve