Узнать, содержит ли строка1 (в БД) строку 2

Рейтинг: 0Ответов: 2Опубликовано: 04.10.2014

Здравствуйте.
Есть таблица table в БД. В ней есть поле box. В поле лежит строка такого вида:

1, 2, 3, 4, 5, 25

Задача

Выбрать все строки, где в поле box содержится число 2.

Почему не подходит

LIKE

Потому что он найдет не только число 2, но и 25. Нужно найти именно число 2.

explode()

Потому что тогда придется вынимать сразу все строки и уже проходить по ним циклом. А строк будет много.

Нужно обойтись только sql-запросом. Буду очень благодарна, если кто-нибудь подскажет, в каком направлении двигаться!

Ответы

▲ 1

а почему не подходит LIKE %2,%

запятая не даст выбрать 25

▲ 1

Чтоб найти слово, можно использовать регулярные выражения REGEXP '[[:<:]]2[[:>:]]'.
Так:

SELECT 
  '1, 2, 3, 4, 5, 25' REGEXP '[[:<:]]2[[:>:]]' AS yes1, 
  '1, 3, 4, 5, 25, 2' REGEXP '[[:<:]]2[[:>:]]' AS yes2,
  '2, 1, 3, 4, 5, 25' REGEXP '[[:<:]]2[[:>:]]' AS yes3,
  '1, 6, 3, 4, 5, 25' REGEXP '[[:<:]]2[[:>:]]' AS no1