按查询字符串搜索顺序

时间:2015-04-01 12:37:39

标签: mysql sql select sql-order-by

我使用以下工作mysql查询:

SELECT Nom_Appellations
FROM appellations
WHERE Nom_Appellations LIKE '%saint%'
LIMIT 8

我有这个结果:

Lussac-Saint-Emilion
Montagne-Saint-Emilion
Puisseguin-Saint-Emilion
Saint-Emilion
Saint-Emilion grand cru
Saint-Emilion grand cru classé

但是我想通过字符串“saint”的相似性来订购:

Saint-Emilion
Saint-Emilion grand cru
Saint-Emilion grand cru classé
Lussac-Saint-Emilion
Montagne-Saint-Emilion
Puisseguin-Saint-Emilion

如何通过精选字符串获取数据顺序?

2 个答案:

答案 0 :(得分:1)

您可以在saint中查找Nom_Appellations的第一次出现:

SELECT Nom_Appellations
FROM appellations
WHERE Nom_Appellations LIKE '%saint%'
ORDER BY LOCATE('saint', lower(Nom_Appellations))
LIMIT 8;

答案 1 :(得分:0)

SELECT Nom_Appellations
FROM appellations
WHERE Nom_Appellations LIKE '%saint%'
ORDER BY case when left(nom_Appellations,5)= 'Saint' then 0 else 1 end, nom_appellations
LIMIT 8;

假设你只想要那些首先出现圣徒,其余按字母顺序排列。