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

MySQL:reemplace la ocurrencia de una cadena en el campo, excepto la primera

Si "MyString" siempre aparece como el primer término en el campo, esto funcionaría:

update MyTable set MyField = replace(MyField, ' MyString','')

El punto clave anterior es que buscamos ocurrencias de "MyString" con un espacio inicial, por lo que se ignorará la primera ocurrencia al principio del campo.

Sin embargo, supongo que esto podría ser demasiado frágil:¿qué pasa si la primera aparición de "MyString" no está al principio del campo?

en este último caso necesitas lo siguiente:

UPDATE 
    MyTable 
SET 
    MyField = 
    CONCAT(
        LEFT(MyField,INSTR(MyField,'MyString') + LENGTH('MyString')), 
        REPLACE(RIGHT(MyField, LENGTH(MyField) - (INSTR(MyField,'MyString') + LENGTH('MyString'))), 'MyString','') 
    )

Lo que esto hace es dividir el campo en dos, la primera parte hasta e incluyendo la primera aparición de "MyString", y la segunda parte reemplaza todas las demás apariciones.