ORDER BY找到SQL Server中WHERE LIKE子句的位置?

时间:2012-07-04 17:16:21

标签: sql sql-server sorting

我有以下SQL Server查询:

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”,则可能是他们从头开始而不是中间键入单词。

此外,在任何人提到之前 - 我确实意识到我可以通过删除第一个通配符(%)来实现这些结果,但只是想知道是否有其他方法可以在不需要的情况下执行此操作。

非常感谢。

1 个答案:

答案 0 :(得分:3)

这应该可以解决问题

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

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