sql >> Databáze >  >> RDS >> Mysql

MySQL nahradit zástupným znakem

Aktualizace:MySQL 8.0 má funkci REGEX_REPLACE() .

Níže je moje odpověď z roku 2014, která stále platí pro jakoukoli verzi MySQL před 8.0:

REPLACE() nepodporuje zástupné znaky, vzory, regulární výrazy atd. REPLACE() pouze nahrazuje jeden konstantní řetězec jiným konstantním řetězcem.

Můžete zkusit něco složitého, vybrat přední část řetězce a koncovou část řetězce:

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

To však nefunguje v případech, kdy máte více výskytů <tag> .

Možná budete muset načíst řádek zpět do aplikace, provést nahrazení řetězce pomocí vašeho oblíbeného jazyka a odeslat řádek zpět. Jinými slovy, proces tří kroků pro každý řádek.




  1. Funkce TO_DATE() v Oracle

  2. ORA-00054:zdroj je zaneprázdněn a získává se se specifikovaným NOWAIT nebo vypršel časový limit

  3. Hromadné vkládání polí pevné šířky

  4. Sloupec MySQL nastaven na NOT NULL, ale stále umožňuje hodnoty NULL