2016-05-17 14 views
1

我有一個數據庫表(例如書)與列名稱(字符變化)的一部分。我從csv將數據導入到此表中。不幸的是,在CSV的名稱列中,幾乎所有行都包含一些特殊字符,如/_PostgreSQL加入不能使用特殊字符

現在我有另一個csv,其中包含2列,這是導入的無效名稱列和正確的名稱值作爲另一列。我將它導入到我創建的新表中,更新後我將刪除。當我嘗試組合要更新的表時,具有特殊字符的列不顯示。

select b.name from Book b JOIN tempBook tb on b.name= tb.invalid_name; 

返回0行雖然手動檢查確認這兩個值是相同的幾百列。

我無法刪除並重新導入數據到Book表,因爲它的實時數據和其他列已被修改。有沒有一種方法可以查詢和匹配兩個匹配列包含特殊字符的表?

編輯

的樣本數據

Book 
HarryN/APotter 

tempBook 
HarryN/APotter 

倒是查詢之前返回0的結果。我期待的結果是

HarryN/APotter 
+0

添加一些示例表數據。而預期的結果! – jarlh

+0

在編輯 – Visahan

+2

下添加樣本數據也許在其中一個字段中有空白尾部? (或兩者)嘗試:'...在TRIM(b.name)= TRIM(tb.invalid_name);' – joop

回答

0

你可能有其他不尋常的字符。我將代替空格在有效名稱和使用進行比較:

select b.name 
from Book b JOIN 
    tempBook tb 
    on tb.invalid_name like '%' || replace(b.name, ' ', '%') || '%'; 

這不會是非常有效的。但是,它可以讓你開始研究問題的癥結所在。