2012-02-03 19 views
0
TABLE ITEMS: (id, name) 
1| chicken 
2| potato 

QUERY:如何使用mysql對陣

select * from items where match(name) against('tato'); 

正在返回一個空集。我想知道如何與作品相匹配嗎?

回答

0

嘗試使用:

SELECT * FROM items 
WHERE INSTR(name, 'tato') > 0 

SELECT * FROM items 
WHERE name LIKE '%tato' 

你正在使用的語法似乎是正確的;你在該字段上啓用了全文嗎?

ALTER TABLE items ADD FULLTEXT(name); 
+0

這不會使用任何索引,並且會執行全表掃描。在任何大型表格上,這種方法都不行。 – 2012-10-31 17:46:43

+0

@KenMazaika:OP沒有談論「大桌子」......無論如何,你有更好的主意嗎? – Marco 2012-10-31 22:14:40

0

我不認爲FULLTEXT索引支持部分單詞匹配。對於這樣的事情,你最好使用Marco描述的結構之一。

+1

這是正確的,除非您使用特殊的操作符來改變MATCH AGAINST的行爲。 MATCH AGAINST也可以做一些奇怪的事情,可能不是你所期望的。例如,它會忽略在數據庫中經常出現的任何定義的停用詞和詞。它也會忽略不符合ft_min_word_len系統變量的單詞,無論設置爲什麼。由於這些原因,我強烈建議您採用Marco的建議並改用INSTR或LIKE(儘管如果您想要在字符串中的任何位置出現tato,而不僅僅是末尾,我會使用LIKE'%tato%')。 – David 2012-02-03 22:29:40