2015-06-18 2 views
0

У меня есть простая таблица имен locations с 3 полямиКак использовать MySQL LIKE в запятыми значений

ID  | location | sub_location 
------------------------------------------ 
1  | loc1  | sub1,another,sub3 
2  | loc2  | test1,test 

Как я могу получить соответствующие значения из location или sub_location на основе входных данных пользователей? В простой форме пользователь вводит несколько букв в текстовое поле. Я должен проверить, есть ли подходящее значение в location или sub_location. Но проблема в том, что у меня есть значения, разделенные запятой, в столбце sub_location. Каждое разделенное запятыми слова следует рассматривать как разные значения, и результат должен быть одинарным. Представьте, что пользователь вводил «sub» в качестве поискового запроса, тогда мой запрос выглядит примерно так. Но это не сработает и вызывает ошибку запроса рядом с предложением WHERE. Есть идеи?

SELECT ID, location, sub_location FROM locations WHERE location LIKE %sub% OR WHERE sub_location LIKE %sub% 

ответ

1
SELECT ID, location, sub_location 
FROM locations 
WHERE location LIKE'%sub%' 
    OR sub_location LIKE '%sub%' 

Без второго Где пункт просто добавьте ИЛИ

+0

Ошибка MySQL. # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования около '% sub% ИЛИ sub_location LIKE% sub% LIMIT 0, 30' в строке 1 –

+2

Я думаю, вы должны написать '... like '% sub% «...» с одинарными кавычками вокруг строки – monim

+1

Отсутствует «одиночная кавычка». – Wanderer

0

select * from locations where (location = input) or
(sub_location like concat('%',input, ',%') or
sub_location like concat('%,',input, ',%') or
sub_location like concat('%,',input, '%') or
sub_location like concat('%',input, '%'))