2011-10-21 51 views
1

我想知道如果我可以在我的查詢中搜索字符串內的單詞的東西。例如,如果我有一個名爲user_purchased的字段,我想查詢它,並只拉動字符串中存在「狗」一詞的記錄。mysql查詢,查找字符串中的值

我知道我能做到這一點使用PHP這樣

(!stristr($row['user_purchased'], 'dog')) 

但是,我想知道如果我能做到這一點在查詢本身,而不是,而這將可能加速性能。

預先感謝這個

+0

請注意,所有涉及LIKE'%foo%'或'INSTR'的答案都會強制執行完整掃描。如果你的桌子很大,這會很慢。他們可以*不*做索引查找。 – derobert

+0

謝謝,如果我想最大限度地提高速度,我會用什麼來代替。我的表很大所以速度是一個問題 –

+0

如果速度很關鍵,你需要一個索引解決方案,比如MySQL fulltext或者Sphinx。 – derobert

回答

1

您可以用這樣的:

WHERE your_col LIKE '%dog%' 

如果你想要更好的表現,你可以看看full text search。這使用FULLTEXT索引來快速找到匹配的行。

+0

謝謝,這是有道理的。我將如何改變這種搜索結果,沒有在他們的狗字? –

+1

弄明白了,不使用LIKE –

0

在MySQL中,你可以使用INSTR幫助(STR,SUBSTR)從MySQL手冊

報價在http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_instr

INSTR(str,substr) 

Returns the position of the first occurrence of substring substr in string str. This is the same as the two-argument form of LOCATE(), except that the order of the arguments is reversed. 

mysql> SELECT INSTR('foobarbar', 'bar'); 
     -> 4 
mysql> SELECT INSTR('xbar', 'foobar'); 
     -> 0 
This function is multi-byte safe, and is case sensitive only if at least one argument is a binary string. 
0

SELECT * FROM table WHERE user_purchased LIKE'%dog%';