Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich mySQL replace() verwenden, um Strings in mehreren Datensätzen zu ersetzen?

Auf einer sehr allgemeinen Ebene

UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

In Ihrem Fall sagen Sie, dass diese maskiert wurden, aber da Sie nicht angeben, wie sie maskiert wurden, sagen wir, sie wurden in GREATERTHAN maskiert

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Da Ihre Abfrage eigentlich innerhalb der Zeichenfolge arbeiten wird, ist Ihr WHERE -Klausel, die ihren Musterabgleich durchführt, wird die Leistung wahrscheinlich nicht verbessern - sie wird tatsächlich mehr Arbeit für den Server generieren. Sofern Sie kein anderes Element der WHERE-Klausel haben, das die Leistung dieser Abfrage verbessern wird, können Sie einfach eine Aktualisierung wie folgt vornehmen:

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

Sie können auch mehrere REPLACE verschachteln Anrufe

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

Sie können dies auch tun, wenn Sie die Daten auswählen (im Gegensatz zum Speichern).

Also statt :

SELECT MyURLString From MyTable

Könntest du machen

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