0

我有一varchar列有 3 行:

i eat orange,
orange,
oranges are nice

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

orange, oranges are nice, i eat orange

即那些以开头的匹配'keyword'=orange应该出现在那些包含关键字的匹配之前,而这些匹配又应该出现在那些以关键字结尾的匹配之前。

如何使用 T-SQL 做到这一点?我尝试使用LIKE关键字,但到目前为止没有成功。

4

2 回答 2

2

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

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

这会将最早出现的关键字放在首位。

于 2011-08-26T21:21:13.890 回答
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

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

于 2011-08-26T21:25:45.790 回答