Я не знаком с регулярным выражением в MySQL.
Для проверки, существует ли значение в строке, вы можете использовать
mysql> SELECT FIND_IN_SET(15, '1,2,15,4,5,6'); +---------------------------------+ | FIND_IN_SET(15, '1,2,15,4,5,6') | +---------------------------------+ | 3 | +---------------------------------+ 1 row in set (0.00 sec)
и проверить его на наличие больше 0 (0 возвращается, если совпадений не найдено).
LIKE '%,2,%' для совпадения в середине, LIKE '2,%' для совпадения в начале, LIKE '%,2' для совпадения в конце и точного совпадения, вы можете использовать = '2'
LIKE '%,2,%'
LIKE '2,%'
LIKE '%,2'
= '2'
ОБНОВЛЕНИЕ : Для работы во всех случаях вы можете использовать ИЛИ, X LIKE '%,2,%' OR X LIKE '2,%' OR X LIKE '%,2' OR X='2'
X LIKE '%,2,%' OR X LIKE '2,%' OR X LIKE '%,2' OR X='2'
Какую проблему вы действительно пытаетесь решить, здесь, правда? Это пахнет как плохой дизайн.
(я не вижу комментария поле, возможно, из-за отсутствия повторения --- поэтому опубликовано как ответ.)
SELECT '1,2,7,9,13,3,10,4,21,6,12' REGEXP '(^2$)|(^2,)|(,2,)|(,2$)' AS matches
Возможно, он хорошо настроен, но должен работать.
P.S. Пожалуйста, не используйте тему, чтобы написать весь вопрос