Come sostituire facilmente le sottostringhe con MySQL REPLACE

Il comando MySQL REPLACE vi permette di correggere gli errori o sostituire informazioni obsolete all’interno di una stringa. È importante tenere conto della differenza fra lettere maiuscole e minuscole.

Che cos’è MySQL REPLACE?

La funzione del comando MySQL REPLACE è riassumibile in una frase: MySQL REPLACE sostituisce tutte le occorrenze di una sottostringa con un’altra sottostringa. In generale, questa affermazione è corretta, ma per essere più precisi vale la pena osservare innanzitutto la struttura di MySQL.

Il sistema di gestione di database utilizza delle tabelle per memorizzare i dati e per renderli nuovamente disponibili quando necessario. Questi dati sono memorizzati sotto forma di stringhe scritte fra virgolette semplici o doppie. Talvolta può capitare un errore di scrittura o che un’informazione diventi obsoleta. È qui che entra in campo il comando MySQL REPLACE.

Anziché dover cercare ogni singola occorrenza della sottostringa superflua e correre il rischio che ne sfugga una variante, MySQL REPLACE svolge questo compito al posto vostro. Il comando cerca tutti i punti in cui la sottostringa memorizzata ricorre in una stringa e la sostituisce con una nuova informazione, definita da voi. In questo modo potete sostituire un URL ormai obsoleto, correggere inversioni di lettere e numeri o aggiornare altri valori cambiati nella vostra tabella. Il risultato è una raccolta dati ottimizzata e aggiornata. L’utilizzo del comando MySQL REPLACE è molto facile e presenta soltanto poche potenziali insidie.

La sintassi di MySQL REPLACE

Se state imparando a utilizzare MySQL, probabilmente conoscete già alcuni comandi come MySQL CONCAT, MySQL DELETE, MySQL DATE o MySQL DATEDIFF. Rispetto a queste funzioni, MySQL REPLACE è leggermente più complessa, in quanto il comando richiede obbligatoriamente tre diversi parametri che devono essere separati da virgole. Il motivo della loro presenza è subito chiaro dando un’occhiata alla sintassi, che si presenta così:

REPLACE (stringa, vecchia_sottostringa, nuova_sottostringa);

Con il parametro “stringa” viene definita la sequenza di caratteri sorgente in cui deve avvenire la sostituzione. Il parametro “vecchia_sottostringa” indica la sottostringa che il sistema deve individuare e sostituire. L’ultimo parametro richiesto da MySQL REPLACE è la sottostringa da inserire per la sostituzione. La nuova sottostringa sostituisce quella vecchia ovunque si trovi nella stringa specificata.

Funzionamento di MySQL REPLACE

Per comprendere il funzionamento di MySQL REPLACE torna utile un semplice esempio. A tal fine, prendiamo una serie di parole e ne cambiamo semplicemente il significato usando il comando, che si presenta così:

SELECT REPLACE ("BUCO FUNGO MELO", "U", "A");

In questo modo diamo istruzione al sistema di sostituire la lettera “U” con la lettera “A” nella stringa “BUCO FUNGO MELO”. Questa modifica viene effettuata ovunque si trovi la lettera “U” nella versione corrente. In questo caso, l’output sarebbe quindi:

REPLACE ("BUCO FUNGO MELO", "U", "A")
BACO FANGO MELO

MySQL REPLACE distingue tra maiuscole e minuscole

È importante ricordare che MySQL REPLACE fa differenza fra lettere maiuscole e minuscole. Nell’esempio precedente, ciò non ha alcuna importanza, ma il caso seguente mostra il motivo per cui può fare differenza.

SELECT REPLACE ("Freno", "F", "t");

In questo esempio, l’output è il seguente:

REPLACE ("Freno", "F", "t")
treno

In pratica, ciò significa anche che MySQL REPLACE non dà il risultato desiderato se non si tiene conto della differenza fra lettere maiuscole e minuscole quando si scrive il comando. Se nell’esempio qui sopra si inserisce una “f” minuscola come vecchia sottostringa, la sostituzione non può avvenire in quanto la lettera non è presente in questa forma nella stringa.

MySQL REPLACE con i numeri

MySQL REPLACE non funziona solo con le lettere, ma anche con i numeri. Il funzionamento è fondamentalmente identico. Nella seguente serie di numeri è presente un errore evidente che possiamo correggere facilmente con MySQL REPLACE:

SELECT REPLACE ("16345", "6", "2");

L’output appare subito più ordinato:

REPLACE ("16345", "6", "2")
12345

Un esempio nella pratica

Gli esempi precedenti danno un’idea di come potete usare MySQL REPLACE, ma non hanno alcun vantaggio pratico; l’esempio seguente, invece, mostra come il comando può ripulire i vostri dati. Immaginiamo di avere scoperto l’inversione di due lettere nella colonna “Città” di un elenco clienti: anziché “Milano”, è presente almeno una volta la parola “Mialno”. Invece di eliminare tutte le voci, potete sostituire il nome di città errato con la forma giusta. Esempio:

UPDATE Elenco clienti
SET
Città = REPLACE (Città, "Mialno", "Milano");

Ora la colonna interessata contiene di nuovo le informazioni corrette.