Replace MYSQL ( Einen Teil einer Spalte ersetzen)
Fabian Kortkötter
- datenbank
Hallo Leute,
ich sitze jetzt schon seit Tagen an einem Problem und hoffe jemand kann mir helfen.
Ich möchte auf meiner MYSQL Tabelle ein Wort in durch ein anderes ersetzen. Das Problem dabei ist, dass die ersten 200 Stellen nicht ersetzt werden sollen, aber nicht gelöscht bzw verloren gehen sollen.
Mein Denkansatz war dieser:
Erst ein Replace im Substr durchführen und dann über CONCAT aus einer Gespiegelten Tabelle die ersten 200 Zeichen holen und in die Spalte schrieben, die leider bei meiner Lösung immer gelöscht werden, wieder zu holen.
Leider funktioniert das nicht.
update testk set ganzer_text = CONCAT( substr(ganzer_text,200),
replace(
substr( ganzer_text, 200, length( ganzer_text ) ), 'Biologie', '<a href="BIO" title="BIO">BIO</a>'
)
)
Gibt es eine Möglichkeit am Anfang der Spalte einen Text einzufügen?
Ich würde mich freuen über jeden Ansatz der mich weiter bringen könnte.
Hinweis: Ich möchte dies ungern über ein Script lösen.
Hello,
Ich möchte auf meiner MYSQL Tabelle ein Wort in durch ein anderes ersetzen. Das Problem dabei ist, dass die ersten 200 Stellen nicht ersetzt werden sollen, aber nicht gelöscht bzw verloren gehen sollen.
Ich kann Deine Probleme hier nicht sehen.
Du kennst die substring()-Funktion von MySql?
Übersicht:
http://dev.mysql.com/doc/refman/5.0/en/func-op-summary-ref.html
Subbstring():
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
update $tablename
set $datenfeld
= concat(substring($datenfeld,1,200),'neues Wort',substring($datenfeld,(200 + Länge_des_Wortes)) where <bedingung>
Ein kleines Problem gibt es doch nur, wenn das auszutauschende Wort in jeder Zeile eine andere Länge hat. Ist das so?
Harzliche Grüße vom Berg und Frohe Weihnachtszeit
Tom
Hallo Fabian,
auch in einem UPDATE-Statement darf eine WHERE-Klausel vorkommen.
Die Bedingung, die ersten 200 Records unbehelligt zu lassen,
hast Du Dir sicher nicht aus den Fingern gesogen. Also formulierst
Du genau diese Bedingung in der WHERE-Klausel und alles ist okay.
Notfalls kann man auch eine INT-Spalte hinzufuegen und mit Hilfe
von LIMIT die Felder unterschiedlich fuellen, was aber eher etwas
amateurhaftes an sich hat, auch wenn es super funktioniert.
Gruss Norbert