SELECT * FROM city WHERE city LIKE '%value% %value%'


SELECT * FROM city WHERE city LIKE '%value% %value%';

我有一个数据库,有很多城市和两个城市有相似的名字。

Oldenburg in HolsteinOldenburg (Oldenburg)

I get a City from URL

URL:

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

www.example.com/cityname/oldenburg-oldenburg

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

I make this Statement I get Oldenburg in Holstein

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

我在Holstein得到了Oldenburg in Holstein但是如果我做这个声明

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

The Statement work!得到Oldenburg (Oldenburg)我的问题是,我能不能用这个表述?

With

With

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

你问了同样的问题两次:城市是否包含字符串'oldenburg'。这不是你想要的。

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

你正在寻找一个包含'oldenburg'的城市,然后在某个点之后一个空白,然后在某个点之后再次出现'oldenburg'这个词。所以,是的,这就是你想要的。你会发现'Oldenburg(奥尔登堡)',但没有'Oldenburg in Holstein'。

当您从URL中获取城市名称时,其中城市名称的部分与-分开,这将是:

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

顺便说一句:显然你正在使用不区分大小写的排序。否则,您必须使用LIKE '%Oldenburg% %Oldenburg%'才能找到'Oldenburg (Oldenburg)'或WHERE LOWER(city) LIKE ...