Per offrirti un'esperienza di navigazione sempre migliore, questo sito utilizza cookie propri e di terze parti, partner selezionati. I cookie di terze parti potranno anche essere di profilazione.
Le tue preferenze si applicheranno solo a questo sito web. Puoi modificare le tue preferenze in qualsiasi momento ritornando su questo sito o consultando la nostra informativa sulla riservatezza.
E' possibile rivedere la nostra privacy policy cliccando qui e la nostra cookie policy cliccando qui.
Per modificare le impostazioni dei cookies clicca qui
  • seguici su feed rss
  • seguici su twitter
  • seguici su linkedin
  • seguici su facebook
  • cerca

SEI GIA' REGISTRATO? EFFETTUA ADESSO IL LOGIN.



ricordami per 365 giorni

HAI DIMENTICATO LA PASSWORD? CLICCA QUI

NON SEI ANCORA REGISTRATO ? CLICCA QUI E REGISTRATI !

Come sostituire una stringa nei records di una tabella in un database Mysql / MariaDB

di :: 16 giugno 2022
Come sostituire una stringa nei records di una tabella in un database Mysql / MariaDB

Capita spesso di avere l'esigenza di trovare e sostituire ("find & replace") una stringa presente all'interno di uno o più records di una tabella, in un database MySql.

Ad esempio potremmo voler sostituire un valore numerico con uno differente, un nome con un'altro, una url con un'altra.

Vediamo come operatore su tutti i records della tabella anzichè andare a cercare e modificare, ad uno ad uno, i record interessati.

MySQL rende disponbile la funzione REPLACE(), la cui sintassi è:

REPLACE(campo, find_string, replace_with)

I tre parametri da passare alla funzione sono

  • campo: è il campo della tabella su cui vogliamo effettuare il replace
  • find_string: è la stringa che stiamo cercando
  • replace_with: è il valore che andremo ad inserire al posto di find_string

Vediamo subito in azione questa funzione, con un esempio.

All'interno una tabella "aziende", nel campo "codice_postale", cerchiamo i valori "10128" e li sostituiamo con "10121".

UPDATE aziende SET codice_postale = REPLACE(codice_postale, '10128', '10121');

Così facendo abbiamo effettuato un UPDATE di tutti i records che hanno come codice di avviamento postare il valore 10128.

Nulla vieta di effettuare un REPLACE in una SELECT invece che un UPDATE. In questo caso i records non verranno aggiornati.

SELECT id, cognome, nome, REPLACE(codice_postale, '10128', '10121') AS new_codice_postale FROM aziende

Replace di più stringhe con un unico update

Potremmo avere l'esigenza di sostutuire più valori e non solo uno come nel caso precedente.

Ad esempio, nella nostra tabella "aziende", per un problema di encoding abbiamo salvato, nel campo "nome", alcuni caratteri in questo modo: ¬, ¹, ¨

Potrebbe esserti capitato se salvi i caratteri con encoding UTF8 in un campo con encoding Latin1 (ISO-8859-1).

Dobbiamo quindi procedere con la loro sostituzione

  • ¬ con ì
  • ¹ con ù
  • ¨ con è

Facciamo quindi l'UPDATE

UPDATE aziende SET nome=REPLACE(nome, 'ì', 'ì')

Dovremmo ripetere la procedura per tutti i valori da sostiture, oppure possiamo procedere con una unica query, più articolata, concatenando i vari REPLACE in questo modo

UPDATE aziende SET nome=REPLACE(REPLACE(REPLACE(nome, '¹', 'ù'), '¨', 'è'), 'ì', 'ì')

Nota finale. la funzione REPLACE è case-sensitive: significa che se, ad esempio, devi sostiture un carattere Maiuscolo, devi indicarlo come tale e non minuscolo.

Al prossimo articolo. Stay tuned!

 
 
 
 
pay per script

Hai bisogno di uno script PHP personalizzato, di una particolare configurazione su Linux, di una gestione dei tuoi server Linux, o di una consulenza per il tuo progetto?

x

ATTENZIONE