のようなもの
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よりも少ないリソースを使用しているようです(これはあまり望ましくない結果を返します)。 SQL2000でテスト済み。