String replace in MySQL: come eseguirla

di Lorenzo Neri
403 visualizzazioni

La String replace in MySQL può tornare davvero molto comoda, soprattutto se dobbiamo sostituire più di una stringa in un sol colpo! In questo articolo scopriamo come eseguirla.

Dicevo prima che possono capitare scenari in cui abbiamo tante tuple in cui ci sono differenti stringhe che contengono una loro stessa porzione non esatta.

E naturalmente, soprattutto se hai milioni di tuple da modificare, ti stai scervellando nel trovare un metodo efficace per eseguire tutto in un sol colpo.

Ci ho preso vero? 😀

Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!

Bando alle ciance, vediamo come fare e partiamo da un esempio chiave!

Ammettiamo di avere un sacco di tuple con un campo valorizzato con un url:

https://www.sitoweb.com/login/651
https://www.sitoweb.com/login/652
https://www.sitoweb.com/login/653
https://www.sitoweb.com/login/654
https://www.sitoweb.com/login/655

E ci siamo accorti di non voler mettere “login” ma “updatePage”.

Che facciamo allora? Semplice. Una query.

Una update per essere precisi, che però sia in grado di capire il pattern della stringa che siamo intenzionati a modificare.

Vediamola nella sua interezza e poi capiamo cosa fa ogni parte:

UPDATE tabellaDaAggiornare
SET nomeCampo = REPLACE(nomeCampo,'/login/','/updatePage/')
WHERE nomeCampo LIKE '%/login/%'

Di fatto, dopo questa query, la nostra tabella dovrebbe essere più o meno:

https://www.sitoweb.com/updatePage/651
https://www.sitoweb.com/updatePage/652
https://www.sitoweb.com/updatePage/653
https://www.sitoweb.com/updatePage/654
https://www.sitoweb.com/updatePage/655

String replace in MySQL: come funziona

Ora che abbiamo capito come eseguirla, è giusto capire come funziona la string replace dentro MySQL.

Focalizziamoci sulla seconda riga:

REPLACE(nomeCampo,'/login/','/updatePage/')

La replace funziona così, con tre parametri:

  • campo: sarebbe la colonna che intendi modificare dentro la tabella
  • pattern: nient’altro è che la porzione di stringa che intendi sostituire
  • sostituzione: questa invece è la stringa che andrà a sostituire quella impostata nel precedente parametro.

Perciò la sintassi generale diventa:

REPLACE(campoDaModificare,'Stringa-Da-Sostituire','Stringa-Che-Sostituisce')

Però, non basta.

MySQL pretende che gli venga specificato su quale colonna agire e soprattutto come:

WHERE nomeCampo LIKE '%/login/%'

Qua gli stiamo letteralmente dicendo col minor livello di tecnichese possibile:

"MySQL per favore, esegui la replace che ti ho detto prima, solo sul campo che ti ho specificato qui MA SOLO SE DENTRO DI ESSO TROVI UNA STRINGA COME QUELLA SPECIFICATA ORA!"

Di fatto, il parametro usato nella LIKE, da un punto di vista generale, va impostato così:

WHERE campoDaModificare LIKE '%Stringa-Da-Sostituire%'

Continua a scoprire di più con questi articoli!

Lascia un commento

Questo sito potrebbe fare uso di cookie e siccome l'UE mi obbliga a fartelo presente, eccoti il classico banner dove puoi decidere come gestirli. Accetta Leggi di più