0

我在 mysql 中进行查询,但我有一个问题:这是我的列结构

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

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

North Washington
Boston Easht
South Chicago

所以我试图使用 %like% 操作符来匹配它:

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%';

第二个匹配,因为它以“chicago”单词开头,但在查询有前缀的情况下,有没有办法在查询字符串中搜索至少一个匹配项?

4

3 回答 3

3

IN方法

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

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

REGEXP方法

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

SELECT * FROM am_ciudad WHERE Ciu_Nombre REGEXP(North|Washington|...)
于 2013-07-24T15:30:06.553 回答
0

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

如果您想在短语 I love Boston Red Sox 中匹配 Boston,那么您需要使用...LIKE '%Boston%';%s 是通配符,因此在您要匹配的单词之前和之后使用它们告诉查询您不在乎会发生什么之前和之后。您的搜索字符串...LIKE '%NORTH BOSTON';告诉查询您正在寻找<anything>North BOSTON;显然您没有的查询。

希望这是有道理的并有所帮助。

小号

于 2013-07-24T15:34:48.027 回答
-1

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

select * from am_ciudad where Ciu_Nombre in (NORTH,BOSTON);

其他相同,只需将空格替换为','

于 2013-07-24T15:44:53.803 回答