něco jako
Select * from TableName where Name Like 'Spa%'
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end
mělo by fungovat ok.
ve skutečnosti to bude fungovat lépe
Select * from TableName where Name Like 'Spa%'
ORDER BY DIFFERENCE(name, 'Spa') desc;
FWIW Provedl jsem několik rychlých testů a pokud je 'Jméno' v NEZAHRNUTÉM INDEXU, SQL použije index a neprovede skenování tabulky. Zdá se také, že LIKE využívá méně zdrojů než charindex (což vrací méně žádoucí výsledky). Testováno na sql 2000.