sql >> Database >  >> RDS >> Mysql

MySQL voor vervangen met wildcard

Update:MySQL 8.0 heeft een functie REGEX_REPLACE() .

Hieronder staat mijn antwoord uit 2014, dat nog steeds van toepassing is op elke versie van MySQL vóór 8.0:

REPLACE() ondersteunt geen jokertekens, patronen, reguliere expressies, enz. REPLACE() vervangt slechts één constante tekenreeks door een andere constante tekenreeks.

Je zou iets complexs kunnen proberen, om het leidende deel van de snaar en het achterste deel van de snaar te onderscheiden:

UPDATE table
SET Configuration = CONCAT(
      SUBSTR(Configuration, 1, LOCATE('<tag>', Configuration)+4),
      NEW_DATA,
      SUBSTR(Configuration, LOCATE('</tag>', Configuration)
    )

Maar dit werkt niet voor gevallen waarin <tag> . meerdere keren voorkomt .

Mogelijk moet u de rij terughalen in een toepassing, stringvervanging uitvoeren in uw favoriete taal en de rij terugplaatsen. Met andere woorden, een proces van drie stappen voor elke rij.




  1. PostgreSQL:NIET IN versus BEHALVE prestatieverschil (bewerkt #2)

  2. Oracle ODP.Net met Entity Framework 6 - Entity framework database-compatibele provider kon niet worden gevonden

  3. Hoe bereik van uren weer te geven?

  4. Verkrijg de maximaal toegestane lengte in de kolom, mysql