2014-01-24 3 views
0

Вот мой запрос:MySQL WHERE совпадает каскадную строку со строкой в ​​PHP

SELECT * FROM events WHERE (audience like '%Internal%20Medicine%') and ('$date' < end_date) order by end_date 

В базе данных столбец аудитории выглядит как это «Внутренняя медицина, неврология, радиологии».

Мне нужен запрос для соответствия точной строке между запятыми.

+0

Как вы строите этот запрос? –

+0

Посмотрите на [этот вопрос] (http://stackoverflow.com/q/12613926/1438733), который делает то же самое, но с пространственным разграничением. В основном вы хотите совместить '%, X',' X,% ','%, X,% 'и' X', где 'X' - строка поиска. Вы также можете выполнять поиск в регулярном выражении, но это не так эффективно. – Eric

ответ

1

Вот способ сделать это:

SELECT * 
FROM events 
WHERE find_in_set('Internal Medicine', replace(audience, ', ', ',')) > 0 and ('$date' < end_date) 
order by end_dat; 
+0

Удивительный! Я попробовал find_in_set раньше, и это не сработало, я думаю, я не понимал, что пробелы после запятой имели значение. – Stephen

Смежные вопросы