sql >> Databáze >  >> RDS >> Mysql

SQL:vyhledat/nahradit, ale pouze při prvním zobrazení hodnoty v záznamu

Toto by mělo být ve skutečnosti to, co v MySQL chcete:

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

Je to o něco komplikovanější než moje předchozí odpověď - musíte najít první instanci 'A' (pomocí funkce INSTR), pak použít LEFT v kombinaci s REPLACE k nahrazení právě této instance, než použít SUBSTRING a INSTR k nalezení stejného 'A' nahrazujete a SPOJTE jej s předchozím řetězcem.

Viz můj test níže:

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;

Vyrábí:

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. uložené procedury prováděné prostřednictvím jdbc

  2. Je vlákno mysql_insert_id bezpečné?

  3. Zkontrolujte, zda tabulka MySQL existuje bez použití syntaxe select from?

  4. Jak získat počet řádků ovlivněných příkazem, když je uvnitř spouštěče tohoto příkazu