2016-02-29 111 views
0

PostgreSQL給我這個錯誤,當我試着投了TEXT科拉姆的整數。無效的輸入語法:「1」的PostgreSQL

select pro_id::integer from mmp_promocjas_tmp limit 1; 

此列只包含數字,有效整數。如何可以「1」是無效的整數?

select pro_id, length(pro_id) ,length(trim(pro_id)) from mmp_promocjas_tmp limit 1; 

輸出:

1 | 2 | 2 

查詢select pro_id from mmp_promocjas_tmp where trim(pro_id) = '1'說明不了什麼。

我試圖刪除空格,沒有任何結果:

select pro_id from mmp_promocjas_tmp where regexp_replace(trim(pro_id), '\s*', '', 'g') 
+1

附加提供錯誤的查詢。什麼樣的數據類型是'pro_id'列?你能列出'長度(pro_id)'嗎? –

+1

'pro_id'是否等於'1''或''「1」''?什麼是確切的錯誤信息? –

回答

1

有可能在列虛假無形的內容。 爲了讓他們看得見,嘗試這樣的查詢:

select pro_id, c,lpad(to_hex(ascii(c)),4,'0') from (
     select pro_id,regexp_split_to_table(pro_id,'') as c 
     from (select pro_id from mmp_promocjas_tmp limit 10) as s 
) as g; 

這將顯示ID和每個字符的包含,無論是作爲一個字符並作爲劇目的十六進制代碼。

+0

問題隻影響第一行(從csv導入),所以我更新值爲'1',它的工作。我無法真正檢查你的解決方案是否有幫助,但我確實如此。 – Damian