Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > проблема с запросом MySQL


Автор: Orient 20.9.2008, 21:02
Здравствуйте

Голова уже совсем не соображает, помогите с запросом.
Есть текстовое поле, в котором хранятся числовые значение, разделенные запятой, например - 1, 23, 56.
Как мне отфильтровать записи по какому либо из этих значений?

Заранее, спасибо

Автор: Akina 20.9.2008, 21:11
Код

where ', '+`field`+',' LIKE '%, 23,%'

Автор: Orient 20.9.2008, 21:33
Akina, 

Спасибо большое. Вы мне подали мысль, что для общего случая породило следующий код:

Код

 ( `rubrics` LIKE '%,20,%' ) OR ( `rubrics` LIKE '20,%' ) OR ( `rubrics` LIKE '%,20' )


Подозреваю, что можно тут обойтись регулярками, да что-то нету мыслей как тут маску сделать

Автор: teroni 20.9.2008, 23:19
Код

RLIKE '(^|,)20($|,)' 

А Ваша конструкция не поймает поле, если там просто 20 будет.

Автор: Orient 21.9.2008, 13:14
teroni, Да, действительно. Все работает. Большое спасибо!

Автор: skyboy 21.9.2008, 23:05
Orient, всячески рекомендую в таких простых случаях не пользоваться шаблонными функциями like, regexp и т.д., а воспользоваться простым locate:
Код

WHERE LOCATE(',20,', concat(',',`field`,',')) > 0

Автор: Orient 23.9.2008, 15:08
skyboy, Весьма остроумная идея. Спасибо за мысль!   smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)