Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL :rechercher/remplacer mais uniquement la première fois qu'une valeur apparaît dans l'enregistrement

Cela devrait en fait être ce que vous voulez dans MySQL :

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));

C'est un peu plus compliqué que ma réponse précédente - Vous devez trouver la première instance du 'A' (en utilisant la fonction INSTR), puis utiliser LEFT en combinaison avec REPLACE pour remplacer uniquement cette instance, puis utiliser SUBSTRING et INSTR pour trouver le même 'A' que vous remplacez et CONCATEZ-le avec la chaîne précédente.

Voir mon test ci-dessous :

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;

Produit :

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