Php 从城市“%value%%value%”中选择*;

Php 从城市“%value%%value%”中选择*;,php,mysql,sql,mariadb,Php,Mysql,Sql,Mariadb,我有一个数据库,有很多城市和两个名字相似的城市 霍尔茨坦的奥尔登堡和奥尔登堡 我从URL获得一个城市 示例URL: www.example.com/cityname/oldenburg-in-holstein www.example.com/cityname/oldenburg-oldenburg SELECT city FROM citynames WHERE city LIKE '%oldenburg%'; 我在荷尔斯泰因的奥尔登堡发表声明 我又到了荷尔斯泰因的奥尔登堡,但如果我这样说 S

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

霍尔茨坦的奥尔登堡和奥尔登堡

我从URL获得一个城市

示例URL:

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

www.example.com/cityname/oldenburg-oldenburg

SELECT city FROM citynames WHERE city LIKE '%oldenburg%';
我在荷尔斯泰因的奥尔登堡发表声明

我又到了荷尔斯泰因的奥尔登堡,但如果我这样说

SELECT city FROM citynames WHERE city LIKE '%oldenburg% %oldenburg%';
这份声明很有效!我得到了奥尔登堡奥尔登堡 我的问题是,我能用这个语句吗?还是不用

SELECT * FROM citynames WHERE city LIKE '%oldenburg%' AND LIKE '%oldenburg%'';
你问了两次同样的问题:城市是否包含字符串“oldenburg”。这不是你想要的

你正在寻找一个包含“奥尔登堡”的城市,然后在某个地方出现空白,然后在某个地方出现“奥尔登堡”一词。是的,这就是你想要的。你会找到“奥尔登堡奥尔登堡”,但不会找到“荷尔斯泰因的奥尔登堡”

当您从一个URL获取城市名称时,其中城市名称的各个部分用-,这将是:

SELECT city FROM citynames WHERE city LIKE CONCAT('%', REPLACE(url, '-', '%'), '%');
顺便说一句:显然,您使用的排序规则不区分大小写。否则,您必须使用“%Oldenburg%%Oldenburg%”来查找“Oldenburg-Oldenburg”或LOWERcity等

SELECT * FROM citynames WHERE city LIKE '%oldenburg%' AND LIKE '%oldenburg%'';
你问了两次同样的问题:城市是否包含字符串“oldenburg”。这不是你想要的

你正在寻找一个包含“奥尔登堡”的城市,然后在某个地方出现空白,然后在某个地方出现“奥尔登堡”一词。是的,这就是你想要的。你会找到“奥尔登堡奥尔登堡”,但不会找到“荷尔斯泰因的奥尔登堡”

当您从一个URL获取城市名称时,其中城市名称的各个部分用-,这将是:

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

顺便说一句:显然,您使用的排序规则不区分大小写。否则,您必须使用“%Oldenburg%%Oldenburg%”来查找“Oldenburg-Oldenburg”或LOWERcity的位置,例如……

您说它有效,那么问题是什么?因为,我从未见过这样的数据库查询。您说它有效,那么问题是什么?因为,我从来没有见过这样的数据库查询。没有更好的选择吗?@masud_moni:什么更好?查询是直截了当的:查找与模式匹配的城市。你会想出更好的方法吗?如果我有一个更好的选择,我就已经在这里张贴了…..你已经编辑了更新的一个。我只是想学习…我不是故意伤害你的。希望你能理解。上帝保佑……难道没有更好的选择吗?@masud_moni:什么会更好?查询是直截了当的:查找与模式匹配的城市。你会想出更好的方法吗?如果我有一个更好的选择,我就已经在这里张贴了…..你已经编辑了更新的一个。我只是想学习…我不是故意伤害你的。希望你能理解。上帝保佑。。