通过LOCATE MySql

时间:2018-11-28 12:59:08

标签: mysql locate

我正在尝试根据出现的字符串来查找数据集,请检查以下查询-

select name, LOCATE('test', name) 
from afkapi_dev.articles 
where name like '%test%' 
order by LOCATE('test', name) ASC

结果集为-

enter image description here

结果集非常好,但是这里的问题是排序。 谁能解释为什么“测试低” 上方列出了“测试” 的原因,并提出了实现此目标的方法。

谢谢

1 个答案:

答案 0 :(得分:1)

您似乎要求对name进行进一步的排序。对于多级排序,可以在ORDER BY子句中指定不同的列/表达式,并用逗号分隔,并以各自的排序顺序[ASC or DESC]

此外,您可以在LOCATE(..)子句中为SELECT表达式加上别名,然后在ORDER BY中重用该表达式。这样可以防止重新计算LOCATE(..)值。

select name, LOCATE('test', name) AS location 
from afkapi_dev.articles 
where name like '%test%' 
order by location ASC, name ASC