quelque chose comme
Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end
devrait fonctionner correctement.
en fait, cela fonctionnera mieux
Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;
FWIW J'ai fait quelques tests rapides et si 'Name' est dans un INDEX NON CLUSTÉRÉ, SQL utilisera l'index et ne fera pas d'analyse de table. De plus, LIKE semble utiliser moins de ressources que charindex (qui renvoie des résultats moins souhaitables). Testé sur sql 2000.