2012-09-24 21 views
5

Tengo una tabla de productos que contiene un campo llamado 'categorías' para guardar identificadores de categorías relacionadas con productos como valores separados por comas. Estoy usando regexp para buscar productos de una categoría.Encontrar el valor exacto de una cadena separada por comas en PHP MySQL

asumir que hay registro que contiene 4,24,1,31 mi expresión es,

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

pero esto devuelve tanto el producto de categoría 4 y 24

sólo hay que mostrar sólo la categoría 4.

¿Echo de menos algo?

+2

¿Por qué salvar relaciones así? ¿Por qué no usas otra mesa? –

+0

yo estaba. pero tengo muchos productos y cada uno de esos productos está relacionado con dos o más categorías. entonces hace una pequeña mesa enorme. – vinu

+0

Entonces? Esta es la forma correcta de hacer cosas en la base de datos. Ahora tienes que hacer REGEXP en una mesa enorme, ¿crees que es más rápido? –

Respuesta

7

Uso

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

Esto coincide con 4 si rodeada por comas o en el inicio/final de la cadena.

En su versión actual, ambas comas son totalmente opcionales, por lo que el 4 en 24 coincide.

Cuestiones relacionadas