Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL:Suchen/Ersetzen, aber nur das erste Mal, wenn ein Wert im Datensatz erscheint

Das sollte eigentlich das sein, was Sie in MySQL wollen:

UPDATE wp_post
SET post_content = CONCAT(REPLACE(LEFT(post_content, INSTR(post_content, 'A')), 'A', 'B'), SUBSTRING(post_content, INSTR(post_content, 'A') + 1));

Es ist etwas komplizierter als meine frühere Antwort - Sie müssen die erste Instanz des 'A' finden (mit der INSTR-Funktion) und dann LEFT in Kombination mit REPLACE verwenden, um nur diese Instanz zu ersetzen, als SUBSTRING und INSTR verwenden, um dasselbe zu finden 'A' ersetzen Sie und CONCAT es mit der vorherigen Zeichenfolge.

Siehe meinen Test unten:

SET @string = 'this is A string with A replace and An Answer';
SELECT @string as actual_string
, CONCAT(REPLACE(LEFT(@string, INSTR(@string, 'A')), 'A', 'B'), SUBSTRING(@string, INSTR(@string, 'A') + 1)) as new_string;

Erzeugt:

actual_string                                  new_string
---------------------------------------------  ---------------------------------------------
this is A string with A replace and An Answer  this is B string with A replace and An Answer