0

我通过将 varchar 添加到 int4 数组来更新数组。'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 回答