sql >> Database >  >> RDS >> Mysql

Hoe kan ik mySQL Replace() gebruiken om strings in meerdere records te vervangen?

Op een zeer generiek niveau

UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

In jouw geval zeg je dat deze zijn ontsnapt, maar aangezien je niet specificeert hoe ze zijn ontsnapt, laten we zeggen dat ze zijn ontsnapt naar GREATERTHAN

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Aangezien uw zoekopdracht daadwerkelijk binnen de tekenreeks gaat werken, is uw WHERE clausule die zijn patroonovereenkomst doet, zal waarschijnlijk de prestaties niet verbeteren - het gaat in feite meer werk voor de server genereren. Tenzij je een ander lid van de WHERE-clausule hebt waardoor deze query beter gaat presteren, kun je eenvoudig een update als deze uitvoeren:

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

U kunt ook meerdere REPLACE . nesten oproepen

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

U kunt dit ook doen wanneer u de gegevens selecteert (in plaats van wanneer u ze opslaat).

Dus in plaats van :

SELECT MyURLString From MyTable

Je zou kunnen doen

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



  1. Sequenties niet beïnvloed door transacties?

  2. Grondbeginselen van tabeluitdrukkingen, deel 4 – Afgeleide tabellen, overwegingen voor optimalisatie, vervolg

  3. Vergelijking van SQL-tekenreeksen, groter dan en kleiner dan operators

  4. Beperking gedefinieerd UITSTELBAAR EERST ONMIDDELLIJK is nog steeds UITGESTELD?