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

MySQL:sostituisci l'occorrenza di una stringa nel campo tranne la prima

Se "MyString" apparirà sempre come primo termine nel campo, questo funzionerebbe:

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

Il punto chiave sopra è che cerchiamo le occorrenze di "MyString" con uno spazio iniziale, quindi la prima occorrenza all'inizio del campo verrà ignorata.

Tuttavia, suppongo che questo potrebbe essere troppo fragile:cosa succede se la prima occorrenza di "MyString" non è all'inizio del campo?

in quest'ultimo caso è necessario quanto segue:

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

Ciò che fa è dividere il campo in due, la prima parte fino alla prima occorrenza di "MyString" inclusa e la seconda parte sostituendo tutte le ulteriori occorrenze.