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

Hvordan kan jeg bruge mySQL replace() til at erstatte strenge i flere poster?

På et meget generisk niveau

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'SearchForThis', 'ReplaceWithThis')

WHERE SomeOtherColumn LIKE '%PATTERN%'

I dit tilfælde siger du, at disse blev undsluppet, men da du ikke specificerer, hvordan de blev undsluppet, lad os sige, at de blev undsluppet til GREATERTHAN

UPDATE MyTable

SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

WHERE articleItem LIKE '%GREATERTHAN%'

Da din forespørgsel faktisk kommer til at arbejde inde i strengen, vil din WHERE klausul, der gør dets mønstermatching, vil næppe forbedre nogen ydeevne - det vil faktisk generere mere arbejde for serveren. Medmindre du har et andet WHERE-klausulmedlem, der vil få denne forespørgsel til at fungere bedre, kan du blot lave en opdatering som denne:

UPDATE MyTable
SET StringColumn = REPLACE (StringColumn, 'GREATERTHAN', '>')

Du kan også indlejre flere REPLACE opkald

UPDATE MyTable
SET StringColumn = REPLACE (REPLACE (StringColumn, 'GREATERTHAN', '>'), 'LESSTHAN', '<')

Du kan også gøre dette, når du vælger dataene (i modsætning til når du gemmer dem).

Så i stedet for :

SELECT MyURLString From MyTable

Det kunne du gøre

SELECT REPLACE (MyURLString, 'GREATERTHAN', '>') as MyURLString From MyTable



  1. hente parameter fra lagret procedure?

  2. Fejlkode 1292 - Trunkeret forkert DOBBELT værdi - Mysql

  3. Er der en måde at definere en navngivet konstant i en PostgreSQL-forespørgsel?

  4. Opret en fremmednøgle i SQLite