我有以下MySQL查询:
SELECT * FROM users WHERE name LIKE '%jack%'
我希望它能按照杰克的顺序排序
我也可以使用PHP。
答案 0 :(得分:3)
我认为你可以通过在mysql中使用全文搜索功能来完成你想要的。您的查询将如下所示:
SELECT name, MATCH (name) AGAINST ('jack') as score
FROM users ORDER BY score DESC;
使用完整搜索文本时,您需要考虑一些条件:
您可以在此处查看有效的演示:http://sqlfiddle.com/#!9/72bf5/1
有关MySQL中完整搜索文本的详细信息,请访问:http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html
此外,这是我在PHP上使用similar_text
编写的一个工作示例,并对数组函数进行排序:http://ideone.com/UQpBFk
希望它有所帮助!
答案 1 :(得分:0)
我认为你不能用普通的SQL做这种事情。您需要做的第一件事是定义两个字符串相似的含义,其中有various metrics。您应该选择其中一个并编写存储过程来筛选数据。
答案 2 :(得分:0)
正如每一个提到的那样,除了使用full text search
之外,你无法使用正常方式实现这一点,但如果你事先知道所有不同的模式,那么你可以使用FIELD
函数来实现类似的东西像
SELECT * FROM users WHERE name LIKE '%jack%'
ORDER BY FIELD (name,'jack','jacker','majack')
答案 3 :(得分:0)
尝试这样的事情:
$query = mysql_query("SELECT * FROM users WHERE name LIKE '%jack%' ORDER BY name ASC ");
while($fetchdata=mysql_fetch_array($query))
{
echo $fetchdata["name"] ;
}