Ich habe ein Problem mit der Übertragung von "echten" Daten in mein Schema. Es ist eigentlich ein "Projekt" für meinen Datenbankkurs und sie gaben uns einen Tisch mit Hunderennen. Diese Tabelle enthält eine Spalte, die den Namen des Hundes (der wiederum aus dem tatsächlichen Namen und dem Namen des Züchters besteht) und Informationen über das Geburtsland, das tatsächliche lebende Land und das Geburtsjahr enthält. Beispiel eingereicht sind "Lillycette [AU 2012]" oder "Black Bear Lee [AU/AU 2013]" oder "Lemon Ralph [IE/UK 1998]". Ich habe es geschafft, das erste Wort aus und es in der rechten Spalte mit split_part wie folgt speichern:SELECT mittleren Teil eines String, wenn es existiert. Postgresql
INSERT INTO tblHund (rufname)
SELECT
split_part(name, ' ', 1) AS rufname,
FROM tblimport;
tblimport ist eine Tabelle, wo ich die Daten aus der CSV-Datei ausgegeben. Das funktioniert genauso wie es sollte. Zugriff auf den zweiten Teil des Namens mit diesem fehlschlägt, weil manchmal gibt es keinen zweiten Teil und manchmal gibt es zweiten Teil besteht aus zwei Wörtern.
Und das ist der Ort, an dem ich gerade feststeckte. Ich versuchte es mit Teilzeichenfolge und regulären Ausdrücken:
INSERT INTO tblZwinger (Name)
SELECT
substring(vatertier from E'[^ ]*\\ (+)$')AS Name
FROM tblimport
WHERE substring(vatertier from E'[^ ]*\\ (+)$') != '';
Der obige Code fehlerfrei ausgeführt wird, aber eigentlich tut nichts, weil die SELECT-Anweisung nur leere Strings zurück geben.
Ich brauchte mehr als 3h, um ein bisschen von diesen regulären Ausdrücken zu verstehen, aber ich fühle mich immer noch ziemlich dumm, wenn ich sie anschaue.
Gibt es eine andere Möglichkeit, dies zu tun. Wenn ja, gib mir einen Hinweis. Wenn nicht, was ist falsch mit meinem Ausdruck oben?
Danke für Ihre Hilfe.