2013-07-24 48 views
-1

我正在做MySQL中的查询,但我有一个问题:这是我的专栏结构MySQL的搜索匹配的查询字符串至少一个字

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

的事情是我可以有一个像搜索项:

North Washington 
Boston Easht 
South Chicago 

所以我想使用类似%%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%'; 

第二个使匹配,因为它那挞与“芝加哥”字,但在查询的情况下有一个前缀它没有,有没有办法通过查询字符串中至少有一个匹配?

+0

你在问什么?任何结果,包括北部或华盛顿或波士顿或东部..或以某种方式做答案必须知道其“北华盛顿”或“波士顿东部”等 – Anigel

回答

2

IN方法

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

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

REGEXP方法

我能想象REGEXP会慢一些,但我没有基准。

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

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

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

希望这是有道理的,帮助。

S

-1

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

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

其他人一样,只需用空格替换空格,

相关问题