sql >> Database teknologi >  >> RDS >> Mysql

SQL:søg/erstat, men kun første gang en værdi vises i posten

Dette burde faktisk være, hvad du vil have i 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));

Det er lidt mere kompliceret end mit tidligere svar - Du skal finde den første forekomst af 'A' (ved hjælp af INSTR-funktionen), og derefter bruge VENSTRE i kombination med REPLACE for at erstatte netop den forekomst, end bruge SUBSTRING og INSTR for at finde det samme 'A' du erstatter, og KONCAT det med den forrige streng.

Se min test nedenfor:

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;

Producerer:

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


  1. PHP PDO forberedt erklæring -- MySQL LIKE forespørgsel

  2. PHP singleton database forbindelsesmønster

  3. Oprettelse af en virtuel maskine med Oracle VM Virtual Box

  4. Hvad er forskellen mellem MyISAM og InnoDB?