Corsi on-line

MySQL: utilizzare una stringa CSV come un elenco di possibili valori

In questo breve post vi presento una piccola istruzione grazie alla quale è possibile effettuare la conversione di una stringa in cui i caratteri sono separati da virgole (CSV, Comma Separated Values) in un elenco utile al fine di effettuare una comparazione all’interno di una query MySQL.
Si pensi, ad esempio, ad una stringa di nomi

pluto,pippo,topolino

e di volerla utilizzare al’interno di una SELECT per estrarre tutti i record in cui il campo “nome” contenga uno dei valori presenti nella nostra string CSV. La query da utilizzare è la seguente:

SELECT * from tabella WHERE FIND_IN_SET(nome, 'pluto,pippo,topolino') != 0;

FIND_IN_SET è una funzione che ha il compito di trovare l’indice della prima occorrenza di una stringa all’interno di un set, indipendentemente dal numero di volte in cui si presenta; per cui una SELECT come la seguente:

SELECT FIND_IN_SET('pippo', 'pluto,pippo,topolino');

restituirà “2”, cioè la posizione di “pippo” all’interno del set; nello stesso modo:

SELECT FIND_IN_SET('pippo', 'pluto,pippo,topolino,pippo,paperino');

restituirà comunque “2” nonostante il valore “pippo” sia presente due volte nel nostro set.

Post correlati
I più letti del mese
Tematiche