alex_: search and replace in mysql

Beitrag lesen

Hi,

ich würde gerne in mehreren spalten einer tabelle teilstrings auffinden und durch andere werte ersetzen.

wann immer ein solcher Wunsch vorkommt - und das ist erschreckend häufig - lautet die Schlussfolgerung: Dein DB-Layout sollte überarbeitet werden. Mit an Sicherheit grenzender Wahrscheinlichkeit widerspricht es grundlegenden Prinzipien.

aber wie mach ich das ?

Betrachte jede Spalte für sich allein. In diesem Fall solltest Du nicht "montag" durch "mon" ersetzen, sondern durch die zugehörige Referenz auf die Tabelle, die den Wert enthält.

Cheatah

nee, die tabellen sind schon gut strukturiert, das hat uns immerhin mehrere monate konzeption gekostet. ich hab inzwischen auch ne lösung gefunden:

UPDATE $DB.$table SET
   ATTR_LIST=REPLACE(ATTR_LIST, '$child_code_id', ''),
   ATTR_LIST_TEMPL=REPLACE(ATTR_LIST_TEMPL, '$child_code_id', ''),
   ATTR_LIST_TEMPL_TABS=REPLACE(ATTR_LIST_TEMPL_TABS,'$child_code_id', '') WHERE
   ATTR_LIST LIKE '%$child_code_id%' OR
   ATTR_LIST_TEMPL LIKE '%$child_code_id%' OR
   ATTR_LIST_TEMPL_TABS LIKE '%$child_code_id%';

so, falls jemand das mal benötigen sollte...

trotzdem danke .-)