2016-05-17 4 views
1

Ich habe eine Datenbanktabelle (z. B. Buch) mit dem Spaltennamen (Zeichen variiert) Teil davon. Ich habe Daten von einem CSV in diese Tabelle importiert. Leider enthielten fast alle Zeilen in der CSV-Namensspalte einige Sonderzeichen wie / und _.PostgreSQL Join arbeitet nicht mit Sonderzeichen

Jetzt habe ich eine andere csv, die 2 Spalten enthält, die die ungültige Name-Spalte sind, die importiert wurde und den richtigen Namen Wert als die andere Spalte. Ich habe das in eine neue Tabelle importiert, die ich erstellt habe und die ich nach dem Update löschen werde. Wenn ich versuche, die zu aktualisierenden Tabellen zu kombinieren, werden die Spalten mit Sonderzeichen nicht angezeigt.

gibt 0 Zeilen zurück obwohl manuelle Überprüfung bestätigt beide Werte sind gleich für ein paar hundert Spalten.

Ich kann Daten nicht löschen und erneut in die Book-Tabelle importieren, da die Live-Daten und andere Spalten geändert wurden. Gibt es eine Möglichkeit für mich, die Tabellen abzufragen und abzugleichen, in denen beide übereinstimmenden Spalten Sonderzeichen enthalten?

EDIT

Beispieldaten

Book 
HarryN/APotter 

tempBook 
HarryN/APotter 

aber die zusätzliche Abfrage gibt bisher 0 Ergebnisse. Ich erwarte die Ergebnisse zu sein

HarryN/APotter 
+0

Fügen Sie einige Beispieltabellendaten hinzu. Und das erwartete Ergebnis! – jarlh

+0

Hinzufügen von Beispieldaten unter Bearbeiten – Visahan

+2

Vielleicht gibt es nachgestellte Leerzeichen in einem der Felder? (oder beides) Versuch: '... bei TRIM (b.name) = TRIM (tb.invalid_name);' – joop

Antwort

0

Sie haben wahrscheinlich andere ungewöhnliche Zeichen. Ich würde die Räume in den gültigen Namen ersetzen und verwenden, die zum Vergleich:

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

Dies ist nicht sehr effizient sein wird. Aber es kann Ihnen helfen, herauszufinden, wo die Probleme liegen könnten.

Verwandte Themen