Поиск точного значения из строки, разделенной запятыми, в PHP MySQL

У меня есть таблица продуктов, которая содержит поле под названием «категории», чтобы сохранить идентификаторы категорий, связанных с продуктами, как значения, разделенные запятыми. Я использую regexp для поиска продуктов из категории.

Предположим, что есть запись, содержащая 4,24,1,31 мое выражение есть,

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

но это возвращает оба продукта категории 4 и 24

Мне просто нужно отобразить только категорию 4 .

Я что-то упускаю?

использование

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

Это соответствует 4 если они находятся в запятой или в начале / конце строки.

В вашей текущей версии обе запятые полностью необязательны, поэтому 4 в 24 матчах.