Stampa
Categoria: SQL
Visite: 24467
Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

In SQL esiste un comando molto utile che si chiama replace. Questo comando ci consente di effettuare sostituzioni di massa di stringhe sul nostro database.

Il comando è molto semplice e diventa abbastanza "antipatico" in presenza di stringhe conteneti apici / doppi apici ecc.

Nel mio caso, oltre a dover risolvere il problema dei doppi apici,  ho avuto contemporaneamente la sfortuna di trovarmi a fare le prove con un campo denominato fulltext che ho scoperto essere tra le tantissime parole riservate di MySQL. In questi casi la soluzione è stata quella di mettere il nome della colonna tra apici.

MYSQL

UPDATE table_name SET column_name =

REPLACE(column_name,”original_string”,”replace_string”)

 

Il seguente esempio ha funzionato sul campo introtext della tabella 'content' del db di joomla.

UPDATE `jos_content` 
SET introtext=REPLACE(introtext,'class="mylink1"', '')  
WHERE
  `introtext` LIKE  '%class="mylink1"%'

 

Il seguente esempio ha funzionato sul campo fulltext della tabella 'content' del db di joomla.

Da notare che il campo fulltext, essendo un nome riservato, si trova tra dei particolari singoli apici non presenti nella tastiera italiana. In realtà è chiamato backtick (`) e si ottiene con alt + 96 (tastierino numerico).

UPDATE `jos_content` 
SET  `fulltext`=REPLACE(`fulltext`, 'class="mylink1"', '')  
WHERE
  `fulltext`  LIKE  '%class="mylink1"%'

 

Prima di aggiornare i record potrebbe essere utile effettuare delle ricerche per vedere dove verrà applicata la modifica. La seguente select cerca una classe nel campo introtext e nel campo fulltext della tabella content di joomla e mostra parte del testo trovato.

/* search the class box-glass ...*/
set @t='box-glass';
set @s=CONCAT('%', @t, '%');
select @s;
SELECT 
id, title, 
SUBSTRING(`introtext` ,LOCATE(@t, `introtext`),240),
SUBSTRING(`fulltext` ,LOCATE(@t, `fulltext`),240)
FROM 
 `jos_content` 
 WHERE 
 `introtext` like  @s or
 `fulltext` like @s

 

 

 

REFERENCES

 

 

 

DISQUS - Leave your comments here