我有一个包含3行的varchar
列:
i eat orange,
orange,
oranges are nice
我希望SELECT
查询按此顺序返回结果:
orange, oranges are nice, i eat orange
即。 开始与'keyword'=orange
匹配的匹配应位于包含关键字的匹配之前,该关键字应再次出现在结束之前关键字。
如何使用T-SQL执行此操作?我尝试使用LIKE
关键字但到目前为止没有成功。
答案 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
但实际上,对于这种搜索,您希望使用全文索引。