0

int4 配列に varchar を追加して配列を更新しています。「varchar」フィールドはすべて数値なので、::integer にキャストしようとしましたが、機能しません

update dwh.attr_lookup set kli_tree = array[target_909_kli::integer] || kli_tree

このエラーが発生しています

ERROR: ERROR: invalid input syntax for integer: ""

Query = update
dwh.attr_lookup set kli_tree = array[target_909_kli::integer]
|| kli_tree

これを行う適切な方法は何ですか?

4

2 に答える 2

2

空の文字列を整数にキャストしようとしていますが、うまくいきません:

=> select ''::int;
ERROR:  invalid input syntax for integer: ""
LINE 1: select ''::int;
               ^

空の文字列をどうするかを決める必要があります。それらをゼロに変換したい場合は、次のようなものが機能するはずです。

array[case when target_909_kli = '' then 0 else target_909_kli::integer end]
于 2012-04-09T22:00:09.960 に答える
1

明らかに、あなたのvarcharフィールドはすべての数字ではありません。この場合、二重引用符はありません。エラー メッセージで通知されます。

エラーが明確でない場合は、完全な例を挙げてみてください。テーブル定義とサンプル値を含みます。

于 2012-04-09T21:37:13.010 に答える