Вы не должны хранить списки идентификаторов в строках.Вот причины, по которым:
- Значения должны храниться с использованием правильного типа.int <> string.
- SQL имеет паршивые функции обработки строк.
- Внешние ключи должны быть правильно объявлены.
- SQL не сможет оптимизировать эти запросы.
- В SQL есть отличный способ хранить списки.Это называется таблица , а не строка .
Но иногда вы застряли с кем-то другим, действительно, действительно, действительно, очень, очень плохими данными.модельные решения.Вы можете сделать что-то, используя регулярные выражения:
where category regexp replace($string, ',', '|')
или, возможно, более точно:
where concat(',', category, ',') regexp concat(',', replace($string, ',', ',|,'), ',')