SELECT * FROM city WHERE city LIKE '%value% %value%';
SELECT * FROM city WHERE city LIKE '%value% %value%';
我有一个包含很多城市和两个名称相似的城市的数据库。
霍尔斯坦的奥尔登堡和奥尔登堡(Oldenburg)
我从 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%';
声明有效!我得到 奥尔登堡 (Oldenburg)
我的问题是我可以使用这个声明吗?
有
SELECT * FROM citynames WHERE city LIKE '%oldenburg%' AND LIKE '%oldenburg%'';
您在问同一件事两次:城市是否包含字符串 'oldenburg'。这不是你想要的。
有
SELECT city FROM citynames WHERE city LIKE '%oldenburg% %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 ...
.
我有一个包含很多城市和两个名称相似的城市的数据库。
霍尔斯坦的奥尔登堡和奥尔登堡(Oldenburg)
我从 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%';
声明有效!我得到 奥尔登堡 (Oldenburg) 我的问题是我可以使用这个声明吗?
有
SELECT * FROM citynames WHERE city LIKE '%oldenburg%' AND LIKE '%oldenburg%'';
您在问同一件事两次:城市是否包含字符串 'oldenburg'。这不是你想要的。
有
SELECT city FROM citynames WHERE city LIKE '%oldenburg% %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 ...
.