Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Suchen und Teil des Textes Speichern

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von roleil, 3 Dezember 2015.

  1. roleil

    roleil Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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?
     
  3. akretschmer

    akretschmer Datenbank-Guru

    .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)
    
     
  4. roleil

    roleil Neuer Benutzer

    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 :-/
     
  5. ukulele

    ukulele Datenbank-Guru

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden