SQL Server 2008中的短语搜索(T-SQL)

时间:2011-08-26 21:16:26

标签: tsql search phrase

我有一个包含3行的varchar列:

i eat orange,
orange,
oranges are nice

我希望SELECT查询按此顺序返回结果:

orange, oranges are nice, i eat orange

即。 开始'keyword'=orange匹配的匹配应位于包含关键字的匹配之前,该关键字应再次出现在结束之前关键字。

如何使用T-SQL执行此操作?我尝试使用LIKE关键字但到目前为止没有成功。

2 个答案:

答案 0 :(得分:2)

尝试以下order by子句(假设您的WHERE子句仅返回匹配项)

ORDER BY charIndex(keyword,col_name),length(col_name)

这将首先出现关键字。

答案 1 :(得分:2)

 WHERE column LIKE '%' + keyword + '%'
 ORDER BY CASE WHEN column = keyword THEN 0
               WHEN column LIKE keyword + '%' THEN 1
               WHEN column LIKE '%' + keyword + '%' THEN 2 END

但实际上,对于这种搜索,您希望使用全文索引。