![]() |
![]() |
|
![]() |
![]() |
|
Registrieren | Hilfe/Forumregeln | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 13.11.1999
Beiträge: 466
|
![]() In einer mysql-Tabelle "personen" sind in der Spalte "bemerkung" z.B. folgende Eintraege:
------- bemerkung -------- "Hans hat ein blaues Auto" "Susi hat blaue Lippen" "Karl ist oft blau" Wie lautet die genaue sql-Syntax, um den Substring "blau" in "rot" zu aendern und das Ganze vermutlich mittels UPDATE abzuspeichern? Danke! ff |
![]() |
![]() |
![]() |
#2 |
Aussteiger
![]() |
![]() unter oracle gehts so:
Code:
update personen set bemerkung = replace(bemerkung, 'blau', 'rot') ; http://webxadmin.free.fr/article.php?i=155 http://dev.mysql.com/doc/mysql/en/replace.html
____________________________________
Praktizierender Eristiker No hace falta ser un genio para saber quién dijo eso. Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein. |
![]() |
![]() |
![]() |
#3 |
Master
![]() Registriert seit: 13.08.2003
Beiträge: 624
|
![]() Wennst n select machst funktionierts auf jeden Fall auch mit replace(spalte,'blau','dunkelhellschwarz'), müsst also bei Update auch so sein.
Wenn man in der mysql-hilfe richtig sucht (*zwinker zu pc.net*) findet mans hier: http://dev.mysql.com/doc/mysql/en/string-functions.html mfg Thomas |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
![]() Klar, da das das falsche REPLACE ist.
Dein Link führt auf REPLACE wie "Wenn Datensatz existiert UPDATE, sonst INSERT)" ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() Registriert seit: 13.11.1999
Beiträge: 466
|
![]() Code:
for ($handshake=0; $handshake < 1000; $handshake++) { print "DANKE!"; } zaubert die Vorschau auf den Bildschirm und UPDATE personen SET bemerkung = REPLACE(bemerkung, 'rot', 'Marcel') WHERE bemerkung LIKE '%Susi%' geht dann an die Susi so richtig heran . . . ![]() lg ff |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 13.11.1999
Beiträge: 466
|
![]() Ich will nicht unverschaemt sein, aber wenn ihr Profis zufaellig eine Ergaenzung dazu herumliegen habt, die eine Spalte "namen" von:
----------- namen -------------- Friedrich Schiller Johann Wolfgang von Goethe -------------------------------- auf ----------- namen -------------- Schiller, Friedrich Goethe, Johann Wolfgang von -------------------------------- aendert, dann postet sie bitte! Danke! ff |
![]() |
![]() |
![]() |
#7 |
Aussteiger
![]() |
![]() naja, da wirst wohl um die befehle SUBSTR, INSTR und LENGTH nicht herumkommen ...
Code:
select substr(namen, instr(namen,' ',-1), length(namen)-instr(namen,' ',-1)+1) || ', ' || substr(namen, 1, instr(namen,' ',-1)-1) from personen ;
____________________________________
Praktizierender Eristiker No hace falta ser un genio para saber quién dijo eso. Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein. |
![]() |
![]() |
![]() |
#8 |
Inventar
![]() Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150
|
MySQLs INSTR() kennt anscheinend keinen dritten Parameter...
Ein Würgaround wie folgender... Code:
UPDATE table SET name = CONCAT( SUBSTRING_INDEX(name, ' ', -1), ', ', SUBSTRING( name, 0, LENGTH(name) - LENGTH( SUBSTRING_INDEX(name, ' ', -1) ) ) Enthält der Nachname aber Leerzeichen, dann... ![]() ~
____________________________________
LOL - Mein erstes Post im Programmier Forum MACINTOSH - Most Applications Crash, If Not The Operating System Hangs |
![]() |
![]() |
![]() |
#9 |
Veteran
![]() Registriert seit: 13.11.1999
Beiträge: 466
|
![]() Nochmals herzlichen Dank fuer eure Anregungen! Das hat mir viel Sucherei erspart. Vorerst funktionierten die Codes aber leider nicht. Auch das Ergaenzen der fehlenden Klammer bei Käptn brachte nicht das gewuenschte Ergebnis. Mit etwas Herumschlichten und Trial&Error habe ich es aber dann doch geschafft. Vermutlich ist das SO nicht der optimale Weg, aber es funktioniert - abgesehen von den bloeden Doppelnamen. Die muss ich halt nachbearbeiten. Goethe, Johann > Goethe, Johann Wolfgang von
-------------------------------------------------------------------- ---- Vorschau - z.B. Friedrich Schiller > Schiller, Friedrich ------ -------------------------------------------------------------------- Code:
SELECT namen, CONCAT(SUBSTRING_INDEX(namen, ' ', -1), ', ', CONCAT(SUBSTRING_INDEX(namen, ' ', 1) ) ) FROM zitate WHERE namen LIKE '%%' ---- Speichern - z.B. Friedrich Schiller > Schiller, Friedrich ----- -------------------------------------------------------------------- Code:
UPDATE zitate SET namen = CONCAT(SUBSTRING_INDEX(namen, ' ', -1), ', ', CONCAT(SUBSTRING_INDEX(namen, ' ', 1) ) ) WHERE namen LIKE '%%' ff |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|