2016-11-04 4 views
0

У меня есть база данных с множеством городов и двух городов со сходными именами.SELECT * FROM city WHERE city LIKE '% value%% value%';

Ольденбург в Гольштейне и Ольденбург (Ольденбург)

Я получаю город от URL

Пример URL:

www.example.com/cityname/oldenburg-in-holstein

www.example.com/cityname/oldenburg-oldenburg

SELECT city FROM citynames WHERE city LIKE '%oldenburg%'; 

Я делаю это заявление, я получаю Ольденбург в Гольштейне

SELECT * FROM citynames WHERE city LIKE '%oldenburg%' AND LIKE '%oldenburg%''; 

я получить Ольденбург в Гольштейне снова, но если я делаю это заявление

SELECT city FROM citynames WHERE city LIKE '%oldenburg% %oldenburg%'; 

Заявление работа! И я получаю Ольденбург (Ольденбург) Мой вопрос: могу ли я использовать это заявление или нет?

+0

Вы сказали, что это сработало, тогда в чем вопрос? – Shadow

+0

Потому что я никогда не видел такой запрос к базе данных. – user6834389

ответ

2

С

SELECT * FROM citynames WHERE city LIKE '%oldenburg%' AND LIKE '%oldenburg%''; 

вы спрашиваете одно и то же дважды: содержит ли город строку «Ольденбург». Это не то, что вы хотите.

С

SELECT city FROM citynames WHERE city LIKE '%oldenburg% %oldenburg%'; 

вы ищете город, который содержит «ольденбургская», то после того, что в какой-то момент пустой, то после этого в какой-то момент снова слово «ольденбургская». Так что да, это то, что вы хотите. Вы найдете «Ольденбург (Ольденбург)», но не «Ольденбург в Гольштейне».

Как вы получаете имена города от URL, где части названия города разделены с -, что будет:

SELECT city FROM citynames WHERE city LIKE CONCAT('%', REPLACE(url, '-', '%'), '%'); 

КСТАТИ: Очевидно, что вы используете параметры сортировки, которые не чувствительны к регистру , В противном случае вам нужно будет использовать LIKE '%Oldenburg% %Oldenburg%', чтобы найти «Ольденбург (Ольденбург)» или WHERE LOWER(city) LIKE ....

+0

нет лучшего варианта? –

+0

@masud_moni: Что было бы «лучше»? Запрос прямолинейный: найдите города, соответствующие шаблону. Что вы считаете «лучшим» способом? –

+0

Если бы у меня был лучший вариант, я бы уже разместил здесь. Смотрите ... вы отредактировали обновленный. Я просто просил узнать ... Я не хотел причинить тебе боль. Надеюсь, ты понимаешь. Бог благословит. –