MySQL的顺序是多少就像一个字符串

时间:2014-04-12 12:06:34

标签: php mysql

我有以下MySQL查询:

SELECT * FROM users WHERE name LIKE '%jack%'

我希望它能按照杰克的顺序排序

  1. 插孔
  2. jacker
  3. majack
  4. 我也可以使用PHP。

4 个答案:

答案 0 :(得分:3)

我认为你可以通过在mysql中使用全文搜索功能来完成你想要的。您的查询将如下所示:

SELECT name, MATCH (name) AGAINST ('jack') as score 
FROM users ORDER BY score DESC;

使用完整搜索文本时,您需要考虑一些条件:

  • mysql引擎应支持此功能。我认为InnoDB 5.6和MYISAM 5.5支持这一点。
  • 您必须在表定义中添加FULLTEXT索引。

您可以在此处查看有效的演示: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"] ; 
}