2015-12-19 2 views
3

Я использую следующий запрос для фильтрации записей из моей таблицы:IN оператор не работает со строкой значений

SELECT * FROM teacher_info WHERE teaching_locations in ('Salt Lake City'); 

Этого возвращение пустого результата, даже если я следующие значения сохраняются в таблице в teaching_locations колонки : newyork,Salt Lake City,los angeles.

Я попытался использовать другие значения, и он отлично работает с другими значениями, за исключением значений, имеющих промежутки между пробелами. Например, запрос работает нормально, если значение столбца равно «newyork».

+0

Ваш запрос работает нормально для меня. http://sqlfiddle.com/#!9/2f11a/2 –

+0

Существует связанный с вами вопрос, который может быть вам полезен - [полезный вопрос] (http://stackoverflow.com/questions/4155873/find-in-set -vs-in) –

+0

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

ответ

0

Используйте FIND_IN_SET() вместо оператора IN.

Попробуйте это:

SELECT * 
FROM `teacher_info` 
WHERE FIND_IN_SET('Salt Lake City', teaching_locations); 
+0

Что делать, если есть несколько значений? Например, я хочу найти новый джерси, город Нью-Йорк и соленое озеро в учебниках – user2623213

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