Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Ersetzen des Vorkommens einer Zeichenfolge im Feld außer der ersten

Wenn "MyString" immer als erster Begriff im Feld vorkommt, würde dies funktionieren:

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

Der entscheidende Punkt oben ist, dass wir nach Vorkommen von „MyString“ mit einem führenden Leerzeichen suchen, sodass das erste Vorkommen am Anfang des Felds ignoriert wird.

Ich vermute jedoch, dass dies zu anfällig ist – was ist, wenn das erste Vorkommen von „MyString“ nicht am Anfang des Felds steht?

in diesem letzteren Fall benötigen Sie Folgendes:

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

Dadurch wird das Feld in zwei Teile geteilt, der erste Teil bis einschließlich des ersten Vorkommens von „MyString“ und der zweite Teil ersetzt alle weiteren Vorkommen davon.