, H' @, F7 g% M( p9 x7 H解决方案: + h w2 W3 D6 W 5 m& [4 T) N, F0 P( [! G6 j/ C& B; o
4 b. c; p. N$ B1 ?7 W 就像是9 |4 z; O: e; Z+ n
Select * from TableName where Name Like 'Spa%'+ A# g- n- C; w; R1 N
ORDER BY case when soundex(name) = soundex('Spa') then '1' else soundex(name) end 5 \4 J3 d; b* K0 T应该可以。" `% e4 T( I/ k$ m& i
实际上这会更好 : s* G4 z. m$ T- GSelect * from TableName where Name Like 'Spa%' 9 X. Z. o; J7 @ e0 JORDER BY DIFFERENCE(name, 'Spa') desc;9 u7 z4 `5 z/ R! a
FWIW我做了一些快速测试,如果“名称”在NONCLUSTERED: o4 T ~8 H: O k! x* g0 ?4 A5 r
INDEX中,则SQL将使用索引,并且不进行表扫描。同样,LIKE似乎比charindex使用更少的资源(charindex返回的期望结果更少)。在sql# K3 C0 D @2 a1 X& a
2000上进行了测试。