sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag använda mySQL replace() för att ersätta strängar i flera poster?

På en mycket generisk nivå

UPDATE MyTable

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

WHERE SomeOtherColumn LIKE '%PATTERN%'

I ditt fall säger du att dessa rymdes men eftersom du inte anger hur de rymdes, låt oss säga att de rymdes till GREATERTHAN

UPDATE MyTable

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

WHERE articleItem LIKE '%GREATERTHAN%'

Eftersom din fråga faktiskt kommer att fungera inuti strängen, din WHERE klausul som gör dess mönstermatchning kommer sannolikt inte att förbättra någon prestanda - den kommer faktiskt att generera mer arbete för servern. Om du inte har en annan WHERE-klausulmedlem som kommer att få den här frågan att fungera bättre, kan du helt enkelt göra en uppdatering så här:

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

Du kan också kapsla flera REPLACE samtal

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

Du kan också göra detta när du väljer data (i motsats till när du sparar den).

Så istället för :

SELECT MyURLString From MyTable

Det kan du göra

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



  1. Hur anpassar man konfigurationsfilen för den officiella PostgreSQL Docker-bilden?

  2. SQL:Sortera efter prioritet, men sätt 0 sist

  3. Frågar en länkad sql-server

  4. Handledning för Microsoft TreeView-kontroll