något liknande
Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end
borde fungera ok.
faktiskt kommer detta att fungera bättre
Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;
FWIW gjorde jag några snabba tester och om 'Namn' finns i ett ICKEKLUSTERAD INDEX kommer SQL att använda indexet och gör ingen tabellsökning. Dessutom verkar LIKE använda mindre resurser än charindex (som ger mindre önskvärda resultat). Testad på sql 2000.