algo como
Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end
deve funcionar ok.
na verdade isso vai funcionar melhor
Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;
FWIW Fiz alguns testes rápidos e se 'Nome' estiver em um ÍNDICE NÃO CLUSTERADO o SQL usará o índice e não fará uma varredura de tabela. Além disso, LIKE parece usar menos recursos que charindex (que retorna resultados menos desejáveis). Testado em sql 2000.