Stringersetzung in Datenbanktabelle

HPB

Erfahrenes Mitglied
Hallo zusammen.
Gibt es eine Möglichkeit, direkt per sql-statement eine Spalte einer Tabelle nach dem Vorkommen eines Strings zu durchsuchen und diesen durch einen anderen zu ersetzten?

Beispiel:
Ursprüngliche Tabelle:
| c1 | c2 | c3 |
----------------------------------
| XXX | XaaaY | XXX |

Alle 'aaa' sollen durch 'bbb' ersetzt werden:
| c1 | c2 | c3 |
----------------------------------
| XXX | XaaaY | XXX |


Kann ich das in einer schicken mySql-Anweisung verpacken?
(update * from $tabname set c2='?' where c2='?aaa?).
Wir muss die Syntax lauten?

Danke für die Hilfe,
Peter

P.S.: Oder muss ich die komplette Tabelle auslesen und zeilenweise manipulieren und dann zurückschreiben.
 
Danke für den Tipp! Replace stünde mir prinzipell zur Verfügung. Ich habe aber nicht ganz verstanden, wieso hier ein replace angebracht wäre.

Zudem frage ich mich eher wie die Ersetzung generell funktioniert.

Wie kann ich in der set- Klausel auf den aktuelle Wert des Datensatzes zugreifen?
Daher mein etwas rudimentärer Ansatz der sql-Abfrage:

update * from $tabname set c2='? bbb ?' where c2 like '%aaa%'.

Wie bekomme ich den Inhalt der zwei Platzhalter in das SET c2= '? bbb ?' (anstatt der ?).
(Bei regulären Ausdrücken geht das ja).
 
Folgende Abfrage wäre möglich:
Code:
UPDATE
        `foo`
  SET
        `bar` = REPLACE(`bar`, "aaa", "bbb")
  WHERE
        `bar` LIKE "%aaa%"
 
perfekt! genau das habe ich gesucht.

Für alle, dies auch mal probieren wollen ein etwas ausführlicheres Code Schnipsel:
PHP:
DROP TABLE IF EXISTS `hpb_test_table`;
CREATE TABLE IF NOT EXISTS `hpb_test_table` (
  `mesid` int(11) NOT NULL default '0',
  `message` text NOT NULL,
  UNIQUE KEY `mesid` (`mesid`)
)


INSERT INTO `hpb_test_table` VALUES (1, '123');

INSERT INTO `hpb_test_table` VALUES (2, 'aaa');

INSERT INTO `hpb_test_table` VALUES (3, 'xxxxx aaa xxxxx');

INSERT INTO `hpb_test_table` VALUES (4, 'xxx aaa xxx aaa xxx');

INSERT INTO `hpb_test_table` VALUES (5, 'xxx aaaa xxx aaaaaa xxx');

UPDATE hpb_test_table
  SET `message` = REPLACE(`message`, "aaa", "bbb")
  WHERE `message` LIKE "%aaa%";
 
Zurück