Suchen und Teil des Textes Speichern

roleil

Neuer Benutzer
Beiträge
2
Hallo Zusammen,

ich stehe von einer Herausforderung die ich ohne Hilfe nicht lösen kann.
Ebenfalls führte die Befragung des großen Orakel (Google) zu nichts neuen.

Ich habe ein Feld das die Inhalte Name und Nachname beinhaltet diese sind durch ein _ getrennt.
Gerne würde ich diese mit SQL endzerren und direkt in die neue Tabelle Einfügen.

Tabelle Laden
Text: "Max_Mustermann"

Tabelle Richtig
Name: "Max"
Nachname: "Mustermann"

Quasi: suche nach _ und Kopiere alles was vor dem Text ist in eine neue Tabelle.

Gruß
Marco
 
Werbung:
Code:
test=*# select regexp_replace('Max_Mustermann','_.*$','') as vorname, regexp_replace('Max_Mustermann','^.*_','') as nachmane;
 vorname |  nachmane
---------+------------
 Max  | Mustermann
(1 row)

Weiß nicht, ob MySQL was ähnliches bietet. Was machst Du, wenn '_' mehrfach oder nicht vorkommt?
 
.oO

Code:
test=# create table dumme_variante(name text);
CREATE TABLE
test=*# insert into dumme_variante values ('Max_Mustermann');
INSERT 0 1
test=*# create table bessere_variante as select regexp_replace(name,'_.*$','') as vorname, regexp_replace(name,'^.*_','') as nachname from dumme_variante ;
SELECT 1
test=*# select * from bessere_variante ;
 vorname |  nachname
---------+------------
 Max  | Mustermann
(1 row)
 
Hi akretschmer,

danke für die wirklich fixe Antwort.
Wenn kein _ vorkommt oder mehr können diese endsprechend mit einem Error gefüllt werden.
Die müssen die Kollegen dann manuell anpassen :-/
 
Werbung:
Dazu braucht es keine regular expressions sondern eigentlich nur in etwa so:
Code:
left(quell_spalte,SUBSTRING_INDEX(POS,'_',1)-1) AS Vorname,
right(quell_spalte,len(quell_spalte)-SUBSTRING_INDEX(POS,'_',1)+1) AS Nachname
 
Zurück
Oben