$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