нещо като
Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end
трябва да работи добре.
всъщност това ще работи по-добре
Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;
FWIW Направих някои бързи тестове и ако 'Име' е в НЕКЛУСТРИРАН ИНДЕКС SQL ще използва индекса и не прави сканиране на таблица. Също така изглежда, че LIKE използва по-малко ресурси от charindex (който връща по-малко желани резултати). Тествано на sql 2000.