我有一varchar
列有 3 行:
i eat orange,
orange,
oranges are nice
我希望SELECT
查询按以下顺序返回结果:
orange, oranges are nice, i eat orange
即那些以开头的匹配'keyword'=orange
应该出现在那些包含关键字的匹配之前,而这些匹配又应该出现在那些以关键字结尾的匹配之前。
如何使用 T-SQL 做到这一点?我尝试使用LIKE
关键字,但到目前为止没有成功。
尝试以下 order by 子句(假设您的 WHERE 子句仅返回匹配项)
ORDER BY charIndex(keyword,col_name),length(col_name)
这会将最早出现的关键字放在首位。
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
但实际上,对于这种搜索,您需要使用全文索引。