2012-09-24 19 views
5

Ho una tabella di prodotto che contiene un campo chiamato "categorie" per salvare gli ID di categoria relativi al prodotto come valori separati da virgole. Sto usando regexp per cercare prodotti da una categoria.Trovare il valore esatto da una stringa separata da virgola in PHP MySQL

supponga c'è record che contiene 4,24,1,31 la mia espressione è,

..WHERE categories REGEXP ',?4,?' 

ma questo rendimenti sia prodotto della categoria 4 e 24

Ho solo bisogno di visualizzare solo categoria 4.

Mi manca qualcosa?

+2

Perché dovresti salvare relazioni del genere? Perché non usi un altro tavolo? –

+0

ero. ma ho molti prodotti e ognuno di questi prodotti è legato a due o più categorie. quindi rende un piccolo tavolo enorme. – vinu

+0

Quindi? Questo è il modo corretto di fare cose nel database. Ora devi fare REGEXP su un tavolo enorme, pensi che sia più veloce? –

risposta

7

Usa

WHERE categories REGEXP "(^|,)4(,|$)" 

Questo corrisponde 4 se circondato da virgole o all'inizio/fine della stringa.

Nella versione attuale, entrambe le virgole sono completamente opzionali, quindi le coppie 4 in 24 corrispondono.

Problemi correlati