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

MySQL :Erstat forekomsten af ​​en streng i feltet undtagen den første

Hvis "MyString" altid vil forekomme som det første led i feltet, ville dette virke:

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

Nøglepunktet ovenfor er, at vi leder efter forekomster af "MyString" med et indledende mellemrum, så den første forekomst i begyndelsen af ​​feltet vil blive ignoreret.

Men mit gæt er, at dette kan være for skrøbeligt - hvad nu hvis den første forekomst af "MyString" ikke er i begyndelsen af ​​feltet?

i sidstnævnte tilfælde har du brug for følgende:

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

Hvad dette gør er at opdele feltet i to, den første del til og med den første forekomst af "MyString", og den anden del erstatter alle yderligere forekomster af den.




  1. ORA-4031 fejl med Direct NFS

  2. Vis mysql i en html-tabel med Node.js

  3. SQL-script til at ændre ALLE fremmednøgler for at tilføje PÅ SLET CASCADE

  4. Sikring af MySQL-forbindelse fungerer i PHP-funktion