簡體   English   中英

MySQL按多少順序排序

[英]MySQL order by how much it's like a string

我有以下MySQL查詢:

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

我要按傑克的多少來訂購

  1. 插口
  2. 傑克
  3. 劫機者

我也可以使用PHP。

我認為您可以通過使用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 : similar_text

希望能幫助到你!

我不認為您可以使用普通SQL來完成這種事情。 您需要做的第一件事是定義兩個具有相似度量標准的字符串相似的含義。 您可能應該選擇其中之一並編寫存儲過程以篩選數據。

就像每個人都提到的那樣,除了使用full text search之外,您無法使用常規方法來實現此目的,但是如果您事先了解所有不同的模式,則可以使用FIELD函數來實現類似於以下結果的東西

SELECT * FROM users WHERE name LIKE '%jack%'
ORDER BY FIELD (name,'jack','jacker','majack') 

嘗試這樣的事情:

$query = mysql_query("SELECT * FROM users WHERE name LIKE '%jack%' ORDER BY name ASC ");

while($fetchdata=mysql_fetch_array($query))
{
echo $fetchdata["name"] ; 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM