Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :remplace l'occurrence d'une chaîne dans le champ sauf la première

Si "MaChaîne" apparaîtra toujours comme premier terme dans le champ, cela fonctionnera :

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

Le point clé ci-dessus est que nous recherchons les occurrences de "MyString" avec un espace au début, de sorte que la première occurrence au début du champ sera ignorée.

Cependant, je suppose que cela pourrait être trop fragile - que se passe-t-il si la première occurrence de "MyString" n'est pas au début du champ ?

dans ce dernier cas, vous avez besoin des éléments suivants :

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

Cela divise le champ en deux, la première partie jusqu'à et y compris la première occurrence de "MyString", et la deuxième partie remplaçant toutes les autres occurrences de celui-ci.