$str_search = 'SLAOG';
SELECT word
FROM table_name
WHERE word REGEXP '^[{$str_search}]+$' # '^[SLAOG]+$'
// Filter the results in php afterwards
// Loop START
$arr = array();
for($i = 0; $i < strlen($row->word); $i++) {
$h = substr($str_search, $i, 0);
preg_match_all("/{$h}/", $row->word, $arr_matches);
preg_match_all("/{$h}/", $str_search, $arr_matches2);
if (count($arr_matches[0]) > count($arr_matches2[0]))
FALSE; // Amount doesn't add up
}
// Loop END
對給定單詞基本運行REGEXP,並根據單詞與搜索單詞相比的出現次數來篩選結果。
REGEXP使用給定單詞的組合從頭到尾檢查所有列。這可能會導致更多的行,然後你需要,但它會給一個很好的過濾器。
循環部分用於在搜索字符串中過濾使用多個字母的位置。我在每個字母上運行一個preg_match_all()
找到單詞和搜索詞來檢查發生的數量,並與count()
進行比較。
不認爲你可以只用SQL我。你更有可能獲取所有記錄並處理PHP方面的問題。 – Shoe
嘗試使用LIKE運算符:http://www.w3schools.com/sql/sql_like.asp – Onheiron
我不知道任何全文是這樣做的...... Google都沒有......所以它必須被硬編碼... – shadyyx