Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment rendre une requête de recherche sql plus puissante ?

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.