我想知道如果我可以在我的查詢中搜索字符串內的單詞的東西。例如,如果我有一個名爲user_purchased的字段,我想查詢它,並只拉動字符串中存在「狗」一詞的記錄。mysql查詢,查找字符串中的值
我知道我能做到這一點使用PHP這樣
(!stristr($row['user_purchased'], 'dog'))
但是,我想知道如果我能做到這一點在查詢本身,而不是,而這將可能加速性能。
預先感謝這個
我想知道如果我可以在我的查詢中搜索字符串內的單詞的東西。例如,如果我有一個名爲user_purchased的字段,我想查詢它,並只拉動字符串中存在「狗」一詞的記錄。mysql查詢,查找字符串中的值
我知道我能做到這一點使用PHP這樣
(!stristr($row['user_purchased'], 'dog'))
但是,我想知道如果我能做到這一點在查詢本身,而不是,而這將可能加速性能。
預先感謝這個
謝謝,這是有道理的。我將如何改變這種搜索結果,沒有在他們的狗字? –
弄明白了,不使用LIKE –
在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.
SELECT * FROM table WHERE user_purchased LIKE'%dog%';
請注意,所有涉及LIKE'%foo%'或'INSTR'的答案都會強制執行完整掃描。如果你的桌子很大,這會很慢。他們可以*不*做索引查找。 – derobert
謝謝,如果我想最大限度地提高速度,我會用什麼來代替。我的表很大所以速度是一個問題 –
如果速度很關鍵,你需要一個索引解決方案,比如MySQL fulltext或者Sphinx。 – derobert