2011-01-07 3 views
1

タイトルと同じです。私はいくつかのテキスト値を持つ1つの列を持っています。たとえば、列data1には値( '31'、32 '、' '、NULL)があります。今、私は別の列を更新したいDATA1からのデータとDATA2(タイプINTを)言うので、私はそのような何かをしようとしています:PostgreSQLで列にint値とNULL値の両方が含まれている場合、テキストからint型にキャストする方法

UPDATE table SET data2=CAST(data1 AS INT). 

PostgreSQLはINTにNULLまたは空の値をキャストすることはできませんので、問題があります。

答えて

5

実際には、NULLをintにキャストできます。空の文字列をintにキャストすることはできません。 data1が空の文字列またはNULLが含まれている場合は、新しい列でNULLたいと仮定すると、あなたはこのような何かを行うことができます。あなたには、いくつかの他のロジックをしたい場合は、例えば使用することができます

UPDATE table SET data2 = cast(nullif(data1, '') AS int); 

(空の文字列をに変換し-1 ):

UPDATE table SET data2 = CASE WHEN data1 = '' THEN -1 ELSE cast(data1 AS int) END; 
関連する問題