2017-02-06 5 views
1

という名前のテーブル。私は何百ものコードを持っているが、コードは1,2または4で始まるコードと呼ばれる列を持っています。私は各列の最初の桁を含む同じテーブル内の新しい列を更新しようとしています。同じテーブル内の別のカラムのPostgreSQL更新カラム

existing column column to update(exists but is empty) 
code    type_ 
113249   1 
135435   1 
254646   2 
208984   2 
409098   4 
429540   4 

コード列が数値で、TYPE_列が

ここ

は、私が試したものであるだけでなく、数値であるが、それは

update labor set type_ = case code 
      when code::text like '%1' then 1 
      when code::text like '%2' then 2 
      when code::text like '%4' then 4 
      end 
+0

'LIKE '%1' に働いていません... LIKE '2%'、etc ... 'ワイルドカードは間違った場所にあります。しかし、以下の@ RomanTkzchukの答えは、とにかくより良いアプローチです。 – JNevill

+0

@JNevill Romanは正しい答えをくれましたが、私が試していたやり方で私はどのように答えますか? – ziggy

+0

私が上記のように、あなたのワイルドカードを番号の前に置かないでください。 – JNevill

答えて

2
update labor set type_ = left(code::text, 1)::int8 
+0

これはうまくいくはずですが、 、整数)は存在しません。指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要があるかもしれません。 – ziggy

+0

両方の列は整数ではありません。 – ziggy

+0

ああ、その美しさを働かせて申し訳ありません。私は時間制限が許せばあなたの答えを受け入れると思ったよりずっと簡単です – ziggy

関連する問題