Ho un campo mysql così
"5,3,2,5,7"
e devo selezionarlo solo se 2 è contenuti in quel campo.
in php userei in_array(2, $array); in mysql?
Ho un campo mysql così
"5,3,2,5,7"
e devo selezionarlo solo se 2 è contenuti in quel campo.
in php userei in_array(2, $array); in mysql?
Una cosa così?
$cerca = 2;
SELECT * FROM tabella WHERE campo LIKE '%{$cerca}%';
no, non volevo usare il LIKE. Non c'è qualcosa di più professionale?
Altrimenti dovrei fare una relazione uno a molti vero?
Che vuol dire "qualcosa di più professionale"?
Se col LIKE funziona perché non dovresti usarlo?
Se ci fosse stata una funzione in_field() sarebbe stata più professionale pur dandoti lo stesso risultato e facendo la stessa cosa?
Like non va bene perchè troverebbe ad esempio anche 12,21 etc.
select * from tabella where find_in_set(2,campo) > 0
Questo trucco di salvare valori divisi per virgola mi ha sempre fatto girare i cosidetti.
Quando invece mi trovavo a lavorare su db gia' fatti, e quindi non potevo togliere sta schifezza e fare una relazione vera, facevo where (campo like '%,2,%' or campo like '2,%' or campo like '%,2')![]()
Oppure anche cosìOriginariamente inviato da bubi1
Questo trucco di salvare valori divisi per virgola mi ha sempre fatto girare i cosidetti.
Quando invece mi trovavo a lavorare su db gia' fatti, e quindi non potevo togliere sta schifezza e fare una relazione vera, facevo where (campo like '%,2,%' or campo like '2,%' or campo like '%,2')![]()
select * from tabella where campo regexp ',2,|^2,|,2$|^2$'
La cosa migliore comunque è evitare soluzioni di questo genere.![]()