sql >> Databasteknik >  >> RDS >> Mysql

SQL:sök/ersätt men bara första gången ett värde visas i posten

Detta borde faktiskt vara vad du vill ha 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 är lite mer komplicerat än mitt tidigare svar - du måste hitta den första instansen av "A" (med INSTR-funktionen), använd sedan VÄNSTER i kombination med REPLACE för att ersätta just den instansen, än använd SUBSTRING och INSTR för att hitta samma 'A' du ersätter och KONCATERA det med föregående sträng.

Se mitt test nedan:

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;

Producerar:

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. Finns det något sätt att bara installera mysql-klienten (Linux)?

  2. symfony 1.4 propel:build-all fungerar inte på Mysql 5.5

  3. Hur använder du en BIGINT som en auto-inkrementerande primärnyckel i Laravel 4

  4. Infoga om det inte finns, annars returnerar id i postgresql