2016-11-04 76 views
0

我有一個數據庫與很多城市和具有類似名稱的兩個城市。SELECT * FROM city where city LIKE'%value%%value%';

荷爾斯泰因地區奧爾登堡奧爾登堡(奧爾登堡)

我從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, '-', '%'), '%'); 

BTW:很顯然,你使用的是不區分大小寫排序規則。否則,您必須使用LIKE '%Oldenburg% %Oldenburg%'才能找到'Oldenburg(Oldenburg)'或WHERE LOWER(city) LIKE ...

+0

沒有更好的選擇嗎? –

+0

@masud_moni:什麼會更好?查詢很簡單:查找匹配模式的城市。你認爲什麼是「更好」的方式? –

+0

如果我有更好的選擇,我會在這裏發佈..看到..你編輯了更新的一個。我只是要求學習...我不是故意傷害你。希望你明白。上帝保佑.. –

相關問題