0

次のSQLServerクエリがあります。

SELECT area 
FROM places 
WHERE REPLACE(area,'-',' ') LIKE REPLACE('%moreto%','-',' ')

これにより、次の結果が返されます。

Moreton Pinkney, Northamptonshire
South Moreton, Oxfordshire
North Moreton, Oxfordshire
Moreton, Merseyside
Moreton-in-Marsh, Gloucestershire
Moreton Jeffries, Herefordshire
Moreton on Lugg, Herefordshire
Maids' Moreton, Buckinghamshire
Moreton Corbet, Shropshire
Moretonhampstead, Devon

見つかったLIKEフレーズの位置に基づいて結果を並べ替える方法はありますか?たとえば、誰かが「moreto」と入力している場合、単語の途中ではなく最初から入力している可能性があります。

また、誰もが言及する前に、最初のワイルドカード(%)を削除することでこれらの結果を達成できることはわかっていますが、必要とされない別の方法があるかどうか疑問に思いました。

どうもありがとう。

4

1 に答える 1

3

これはトリックを行う必要があります

order by PATINDEX ( '%moreto%' , area )

http://msdn.microsoft.com/en-us/library/ms188395.aspx

于 2012-07-04T17:20:01.677 に答える