MySQL搜索在查询字符串上至少匹配一个单词

时间:2013-07-24 15:28:48

标签: mysql sql

我在mysql中进行查询但是我遇到了问题:这是我的列结构

|country|
--------
Boston
--------
Chicago
--------
washington

问题是我可能有一个搜索项目,如:

North Washington
Boston Easht
South Chicago

所以我试图使用%like%operador匹配它:

select * from am_ciudad where Ciu_Nombre LIKE '%NORTH BOSTON';
select * from am_ciudad where Ciu_Nombre LIKE 'CHICAGO%';
select * from am_ciudad where Ciu_Nombre LIKE '%South Chicago%';

第二个匹配,因为它以“芝加哥”字开头,但是如果查询的前缀不是,那么有没有办法通过查询字符串中的至少一个匹配进行搜索?

3 个答案:

答案 0 :(得分:3)

IN方法

使用逗号分隔的搜索查询列表:

SELECT * FROM am_ciudad WHERE Ciu_Nombre IN('North', 'Washington', ...)

REGEXP方法

我可以想象REGEXP会慢一些,但我没有对它进行基准测试。

SELECT * FROM am_ciudad WHERE Ciu_Nombre REGEXP(North|Washington|...)

答案 1 :(得分:0)

您的其他搜索不匹配,因为它们不存在。

如果你想在我爱波士顿红袜队的短语中匹配波士顿,你需要使用...LIKE '%Boston%';%s是外卡,所以在你想要匹配的单词之前和之后使用它们告诉查询你不关心之前和之后会发生什么。您的...LIKE '%NORTH BOSTON';搜索字符串告诉您查询的是<anything>North BOSTON;,这显然是您没有的。

希望这有意义并有所帮助。

取值

答案 2 :(得分:-1)

我不确定您的mysql版本是否支持它,但值得尝试。

从am_ciudad中选择*,其中Ciu_Nombre位于(NORTH,BOSTON);

其他人也一样,只需用','

替换空格