आप स्ट्रिंग फ़ंक्शंस का उपयोग कर सकते हैं, जैसे:
select id, name
from subjects
where name like concat('%', @search, '%')
order by
name like concat(@search, '%') desc,
ifnull(nullif(instr(name, concat(' ', @search)), 0), 99999),
ifnull(nullif(instr(name, @search), 0), 99999),
name;
यह आपको @search युक्त सभी प्रविष्टियाँ प्राप्त करता है। पहले वे जिनके पास शुरुआत में है, फिर जिनके पास रिक्त स्थान के बाद है, फिर घटना की स्थिति के अनुसार, फिर वर्णानुक्रम में।
name like concat(@search, '%') desc
रास्ते में MySQL के बूलियन तर्क का उपयोग करता है। 1 =सत्य, 0 =असत्य, इसलिए इस अवरोही क्रम का क्रम आपको सबसे पहले सत्य देता है।
SQL fiddle:http://sqlfiddle.com/#!9/c6321a/1