2012-04-09 55 views
0

我正在通過向int4數組中添加varchar來更新數組。該「VARCHAR」字段是所有的數字,所以我嘗試澆鑄成::整數,但它不工作更新數組並將其從varchar轉換爲整數

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 

什麼是正確的方式做到這一點?

回答

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] 
1

顯然你的varchar字段是而不是所有數字。在這種情況下不會有任何雙引號,因爲錯誤信息會通知我們。

嘗試給出一個完整的例子,如果錯誤現在還不清楚。包括表格定義和樣本值。

+2

其實就意味着OP試圖施放一個空字符串,而不是用雙引號字符串。 – 2012-04-09 21:57:42

+0

@ muistooshort:的確如此。 – 2012-04-09 22:08:12