sql >> Base de Datos >  >> RDS >> Mysql

SQL:buscar/reemplazar pero solo la primera vez que aparece un valor en el registro

Esto debería ser lo que quieres en 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));

Es un poco más complicado que mi respuesta anterior:debe encontrar la primera instancia de la 'A' (usando la función INSTR), luego use IZQUIERDA en combinación con REEMPLAZAR para reemplazar solo esa instancia, luego use SUBSTRING e INSTR para encontrar lo mismo 'A' que está reemplazando y CONCAT con la cadena anterior.

Vea mi prueba a continuación:

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;

Produce:

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