sql >> Databasteknik >  >> RDS >> Mysql

MySQL :ersätt förekomsten av en sträng i fältet förutom den första

Om "MyString" alltid kommer att förekomma som den första termen i fältet, skulle detta fungera:

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

Den viktigaste punkten ovan är att vi letar efter förekomster av "MyString" med ett ledande mellanslag, så den första förekomsten i början av fältet kommer att ignoreras.

Men min gissning är att detta kan vara för bräckligt - vad händer om den första förekomsten av "MyString" inte är i början av fältet?

i det senare fallet behöver du följande:

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

Vad detta gör är att dela upp fältet i två, den första delen till och med den första förekomsten av "MyString", och den andra delen ersätter alla ytterligare förekomster av den.




  1. Distribuera en Java-app med databasen mysql desktop

  2. Hur man avrundar siffror i databasen till två decimaler med en MySql-fråga

  3. Gå med i Q&A Forum för utvecklare

  4. Designa en datamodell för ett hotellrumsbokningssystem