2015-12-22 2 views
0

Я хочу создать оператор select sql, который будет захватывать строки, если заданное значение находится в списке, разделенном запятыми, в одном из столбцов таблица базы данных.SQL Select - проверка значения в списке, разделенном запятыми - PHP

Пример Таблица ...

ID | курсы
| 5, 8, 15, 19


Я хочу сделать что-то вроде этого
$course_num = 5;
$sql = "SELECT * FROM courses WHERE $course_num IS IN courses";

1.) Я не думаю, что "находится в курсах" часть является законным. Как я могу это сделать?
2.) Для моего кода выше я хотел бы вернуть строку из-за «5» в courses, а не из-за «15». Итак, если $course_num = 9, строки не должны возвращаться.

Благодарим за помощь.

+1

Это хороший пример того, почему хранить несколько значений в одном столбце трудно иметь дело. –

+2

Вы правы, 'IS IN' не является правильным синтаксисом в MySQL, просто' IN() 'http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_in - Возможно, вы обнаружите, что 'FIND_IN_SET()' также может работать на вас http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set - Если вы не используете MSSQL, где 'IS IN' является допустимым синтаксисом. –

+0

новая таблица: id, курсы, 1 | 5, 1 | 8, 1 | 15 и т. Д. –

ответ

0

Путем добавления запятой в появлении искали

SELECT * 
FROM courses 
WHERE concat(', ',course,',') like '%, 5,%' 
+0

Это никогда не будет соответствовать первому или последнему значению – Tristan

+0

вы правы Тристан, забыли concat (усталый ..) – MTroy

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