ORDER BY单词开头或内场

Wer*_*ner 2 mysql sql-order-by

我在mysql-db上有一个ajax-search.示例:搜索我查询的"man":

SELECT id FROM table WHERE name LIKE '%man%;
Run Code Online (Sandbox Code Playgroud)

我现在想要对结果进行排序,以便按字母顺序从搜索开始所有结果:

man
mankind
Run Code Online (Sandbox Code Playgroud)

之后,我想让所有结果按字母顺序宽度搜索INSIDE,如:

iron man
woman
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ja͢*_*͢ck 6

您可以按字符串中搜索字词的位置排序:

SELECT id 
FROM table 
WHERE name LIKE '%man%'
ORDER BY INSTR(name, 'man'), name
Run Code Online (Sandbox Code Playgroud)

另见:INSTR(),LOCATE()

您还可以将表达式更改为仅区分字符串的开头或其他任何位置:

ORDER BY IF(INSTR(name, 'man'), 1, 0)
Run Code Online (Sandbox Code Playgroud)