查询MySQL的字谜

时间:2011-07-23 12:11:30

标签: php mysql sql anagram

我有这个脚本:

$db = mysql_connect($hostname, $db_user, $db_password);
mysql_select_db($database,$db) or die( "Unable to select database");
mysql_query("set names 'utf8'");

$wordy = "pate";

$query = mysql_query("SELECT DISTINCT * FROM $db_table WHERE word LIKE '[pate]' ORDER BY word DESC");
$num = mysql_numrows($query); $i=0; 

while ($i < $num) {
    $word = mysql_result($query,$i,"word");

    echo $word." ";
    $i++;
}

$db_table包含英文单词。我想要回应所有可能的字谜;在这种情况下,它应该回显tape pate peat。我可以使用什么查询来执行此操作?

http://msdn.microsoft.com/en-us/library/ms179859.aspx&lt; - 这是一个描述

2 个答案:

答案 0 :(得分:1)

我认为首先你必须重新排列单词中的所有字母以形成一个数组

然后执行如下的SQL查询:

SELECT DISTINCT * FROM $db_table WHERE word in ($array ) ORDER BY word DESC

得到了另一个想法:

你可以做点什么......

SELECT DISTINCT * FROM $db_table WHERE word like '%$wordy[0]%' AND like '%$wordy[1]%' AND like '%$wordy[2]%' AND like '%$wordy[4]%' ORDER BY word DESC

我可以建议您使用

的评论

length(word)= strlen($ wordy)

答案 1 :(得分:1)

如果您可以修改包含字典的表,请运行一个脚本,该脚本为每个条目添加一个字段,该字段包含按字母顺序包含的字母。然后,您可以按字母顺序将字母放入您正在搜索的单词中,并查找匹配项。

胶带,头和泥炭在按字母顺序排列时都会看起来像“aept”,然后就可以了

$query = mysql_query("SELECT * FROM $db_table WHERE alpha = 'aept' ORDER BY word DESC");