试图让mysql子串搜索工作

时间:2010-02-16 15:30:34

标签: mysql

我有一个带有邮政编码区的表,如SA1,SA3,SA11,LL41,NP20,我需要根据客户输入邮政编码进行搜索,然后匹配相关记录,我试过:

SELECT MATCH(postal_district) AGAINST ('SA1 1EG') FROM `postcodes` WHERE MATCH(postal_district) AGAINST ('SA1 1EG') > 0

但它什么也没有回报,我做错了什么?

4 个答案:

答案 0 :(得分:0)

不太确定你要做什么,但你的意思是......

SELECT COUNT(*) FROM `postcodes` WHERE MATCH(postal_district) AGAINST ('SA1 1EG');

答案 1 :(得分:0)

尝试

SELECT * FROM `postcodes` WHERE postal_district LIKE '%SA1%'

我不确定你在这里要做什么。如果你可以尝试澄清一点。

答案 2 :(得分:0)

MySQL中全文搜索的典型语法是:

SELECT * FROM postcodes
WHERE MATCH (postal_district) AGAINST ('SA1 1EG');

只有在向列添加FULLTEXT索引时才会启用全文搜索。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html

答案 3 :(得分:0)

您是否想要做更像这样的事情?

SELECT postal_district FROM postcodes WHERE  MATCH(postal_district) AGAINST('SA1 1EG' IN BOOLEAN MODE);

我不确定全文搜索是你真正想要的,无论哪种方式,因为你可能更好地服务每行一个代码而只是做一个不区分大小写的匹配(只是比较大写的每个版本)。如果您坚持使用上述内容,请确保您要搜索的列上有全文索引(postal_district)。