2016-05-17 18 views
1

私はデータベーステーブル(たとえばブック)のカラム名(可変文字)の一部を持っています。私はcsvからこのテーブルにデータをインポートしました。残念ながら、CSVの名前欄には、ほとんどの行に/_などの特殊文字がいくつか含まれていました。PostgreSQL Joinが特殊文字と連携していません

今私は、インポートされた無効な名前の列であり、他の列として正しい名前の値である2つの列を含む別のcsvを持っています。これを私が作成した新しいテーブルにインポートしました。更新後は削除されます。更新するためにテーブルを結合しようとすると、特殊文字を含む列は表示されません。

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

戻り0行手動チェックは、両方の値が数百列で同じです確認したのに。

ライブデータで他の列が変更されているため、ブックテーブルにデータを削除して再度インポートすることはできません。両方の一致する列に特殊文字が含まれている表を照会して一致させる方法はありますか?

EDIT

サンプル・データ

Book 
HarryN/APotter 

tempBook 
HarryN/APotter 

しかし、以前に追加されたクエリが0の結果を返します。結果は期待しています

HarryN/APotter 
+0

サンプルテーブルのデータを追加します。期待された結果! – jarlh

+0

編集の下にサンプルデータを追加 – Visahan

+2

フィールドの1つに末尾の空白がある可能性がありますか? 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, ' ', '%') || '%'; 

これは非常に効率的であることを行っていません。しかし、問題がどこにあるのか把握することができます。

関連する問題