sql >> Database >  >> RDS >> Mysql

MySQL:vervang het voorkomen van een string in het veld behalve de eerste

Als "MyString" altijd zal voorkomen als de eerste term in het veld, zou dit werken:

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

Het belangrijkste punt hierboven is dat we zoeken naar exemplaren van "MyString" met een voorloopspatie, zodat het eerste exemplaar aan het begin van het veld wordt genegeerd.

Ik vermoed echter dat dit te kwetsbaar is - wat als de eerste keer dat "MyString" voorkomt niet aan het begin van het veld staat?

in dit laatste geval heb je het volgende nodig:

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

Wat dit doet is het veld in tweeën splitsen, het eerste deel tot en met het eerste exemplaar van "MyString", en het tweede deel vervangt alle verdere exemplaren ervan.




  1. Oracle PLSQL-equivalent van ASCIISTR(N'str')

  2. Tabel bijwerken vanuit een andere tabel in oracle

  3. Hoe laat je PyPy, Django en PostgreSQL samenwerken?

  4. Hoe te ontsnappen aan enkele aanhalingstekens in Oracle?