Il comando MySQL REPLACE vi permette di cor­reg­ge­re gli errori o so­sti­tui­re in­for­ma­zio­ni obsolete all’interno di una stringa. È im­por­tan­te tenere conto della dif­fe­ren­za fra lettere maiuscole e minuscole.

Che cos’è MySQL REPLACE?

La funzione del comando MySQL REPLACE è rias­su­mi­bi­le in una frase: MySQL REPLACE so­sti­tui­sce tutte le oc­cor­ren­ze di una sot­to­strin­ga con un’altra sot­to­strin­ga. In generale, questa af­fer­ma­zio­ne è corretta, ma per essere più precisi vale la pena osservare in­nan­zi­tut­to la struttura di MySQL.

Il sistema di gestione di database utilizza delle tabelle per me­mo­riz­za­re i dati e per renderli nuo­va­men­te di­spo­ni­bi­li quando ne­ces­sa­rio. Questi dati sono me­mo­riz­za­ti sotto forma di stringhe scritte fra vir­go­let­te semplici o doppie. Talvolta può capitare un errore di scrittura o che un’in­for­ma­zio­ne diventi obsoleta. È qui che entra in campo il comando MySQL REPLACE.

Anziché dover cercare ogni singola oc­cor­ren­za della sot­to­strin­ga 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 sot­to­strin­ga me­mo­riz­za­ta ricorre in una stringa e la so­sti­tui­sce con una nuova in­for­ma­zio­ne, definita da voi. In questo modo potete so­sti­tui­re un URL ormai obsoleto, cor­reg­ge­re in­ver­sio­ni di lettere e numeri o ag­gior­na­re altri valori cambiati nella vostra tabella. Il risultato è una raccolta dati ot­ti­miz­za­ta e ag­gior­na­ta. L’utilizzo del comando MySQL REPLACE è molto facile e presenta soltanto poche po­ten­zia­li insidie.

La sintassi di MySQL REPLACE

Se state imparando a uti­liz­za­re MySQL, pro­ba­bil­men­te conoscete già alcuni comandi come MySQL CONCAT, MySQL DELETE, MySQL DATE o MySQL DATEDIFF. Rispetto a queste funzioni, MySQL REPLACE è leg­ger­men­te più complessa, in quanto il comando richiede ob­bli­ga­to­ria­men­te 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);
bash

Con il parametro “stringa” viene definita la sequenza di caratteri sorgente in cui deve avvenire la so­sti­tu­zio­ne. Il parametro “vecchia_sot­to­strin­ga” indica la sot­to­strin­ga che il sistema deve in­di­vi­dua­re e so­sti­tui­re. L’ultimo parametro richiesto da MySQL REPLACE è la sot­to­strin­ga da inserire per la so­sti­tu­zio­ne. La nuova sot­to­strin­ga so­sti­tui­sce quella vecchia ovunque si trovi nella stringa spe­ci­fi­ca­ta.

Fun­zio­na­men­to di MySQL REPLACE

Per com­pren­de­re il fun­zio­na­men­to di MySQL REPLACE torna utile un semplice esempio. A tal fine, prendiamo una serie di parole e ne cambiamo sem­pli­ce­men­te il si­gni­fi­ca­to usando il comando, che si presenta così:

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

In questo modo diamo istru­zio­ne al sistema di so­sti­tui­re la lettera “U” con la lettera “A” nella stringa “BUCO FUNGO MELO”. Questa modifica viene ef­fet­tua­ta 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
bash

MySQL REPLACE distingue tra maiuscole e minuscole

È im­por­tan­te ricordare che MySQL REPLACE fa dif­fe­ren­za fra lettere maiuscole e minuscole. Nell’esempio pre­ce­den­te, ciò non ha alcuna im­por­tan­za, ma il caso seguente mostra il motivo per cui può fare dif­fe­ren­za.

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

In questo esempio, l’output è il seguente:

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

In pratica, ciò significa anche che MySQL REPLACE non dà il risultato de­si­de­ra­to se non si tiene conto della dif­fe­ren­za fra lettere maiuscole e minuscole quando si scrive il comando. Se nell’esempio qui sopra si inserisce una “f” minuscola come vecchia sot­to­strin­ga, la so­sti­tu­zio­ne 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 fun­zio­na­men­to è fon­da­men­tal­men­te identico. Nella seguente serie di numeri è presente un errore evidente che possiamo cor­reg­ge­re fa­cil­men­te con MySQL REPLACE:

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

L’output appare subito più ordinato:

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

Un esempio nella pratica

Gli esempi pre­ce­den­ti 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. Im­ma­gi­nia­mo di avere scoperto l’in­ver­sio­ne 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 so­sti­tui­re il nome di città errato con la forma giusta. Esempio:

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

Ora la colonna in­te­res­sa­ta contiene di nuovo le in­for­ma­zio­ni corrette.

Vai al menu prin­ci­pa­le