hallo,
ich habe ein Feld <name> in dem der Vorname und der Nachname steht.
Ich möchte nun den vorname aus <name> in das feld <vorname> und
den nachname aus <name> in das feld <vorname>.
´Vorname und Nachhname sind durch ein Leerzeichen getennt.
Ich brauche also einen update Befehl der das Feld <name> auflöst in <vorname> <nachname>.
( Spezialität: ich habe in dieser Tabelle auch zwei timestamp Felder datum1 und datum2 die bei dem Update unberührt bleiben sollen )
Gruss und danke RITA
Ankündigung
Einklappen
Keine Ankündigung bisher.
aus 1 mach 2 (Feldinhalt auf 2 Felder aufteilen)
Einklappen
Neue Werbung 2019
Einklappen
X
-
aus 1 mach 2 (Feldinhalt auf 2 Felder aufteilen)
Stichworte: -
-
Ein Hinweis noch: Wenn du mit MySQL ab Version 4.1 arbeitest, solltest du CHAR_LENGTH() statt LENGTH() verwenden, weil LENGTH() nur die Größe der Zeichenkette in Byte zurückgibt, CHAR_LENGTH() aber die tatsächliche Länge an Zeichen.
-
Ein Gast antwortete@ dilemma
... vielen Dank für deine prompte Hilfe.
RITA
Einen Kommentar schreiben:
-
Ein Gast antworteteVermutlich meinst du folgendes:
Code:UPDATE tabelle SET vorname = TRIM(SUBSTRING_INDEX(name, ' ', 1)), nachname = TRIM(SUBSTRING_INDEX(name, ' ', -1)), datum1 = datum1, datum2 = datum2 WHERE (LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))) = 1 AND art = 'ja'
Code:SELECT name, TRIM(SUBSTRING_INDEX(name, ' ', 1)) AS vorname, TRIM(SUBSTRING_INDEX(name, ' ', -1)) AS nachname FROM tabelle WHERE (LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))) = 1 AND art = 'ja'
Einen Kommentar schreiben:
-
Ein Gast antworteteeine ergänzende Frage
hallo,
... funktioniert prächtig !!
wenn ich jetzt noch eine Bedingung einfügen möchte
z.B. where art = 'ja'
füge ich das zwischen tabelle und dem SET ein
also
update tabelle where art = 'ja' SET
oder setze ich die Bedingung ans Ende ?
Gruss RITA
Einen Kommentar schreiben:
-
Ein Gast antworteteNachtrag:
eventuell wäre folgendes machbar:
Code:UPDATE tabelle SET vorname = TRIM(SUBSTRING_INDEX(name, ' ', 1)), nachname = TRIM(SUBSTRING_INDEX(name, ' ', -1)), datum1 = datum1, datum2 = datum2 WHERE (LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))) = 1
die nur EINEN Vornamen und EINEN Nachnamen haben,
korrekt aufteilen.
Alle anderen Datensätze müsstest du anschließend 'zu Fuß' bearbeiten.
~dilemma~
Einen Kommentar schreiben:
-
Ein Gast antworteteWenn es keine doppelten Vornamen und keine doppelten Nachnamen gäbe,
würde folgendes funktionieren:
Code:UPDATE tabelle SET vorname = TRIM(SUBSTRING_INDEX(name, ' ', 1)), nachname = TRIM(SUBSTRING_INDEX(name, ' ', -1)), datum1 = datum1, datum2 = datum2
Und dann wäre ich mit meinem Latein am Ende,
weil ich nicht erkennen kann,
wie man soetwas in Vorname und Name auseindanerpflücken kann.
~dilemma~
Einen Kommentar schreiben:
Einen Kommentar schreiben: