日期:2014-05-18  浏览次数:20598 次

SQL里多关键词查询如何把匹配得最多的列在最前面?
比方有个表TABLE1,里面有个字段是Z,记录1:ABCD,记录2:ACD,记录3:BC,记录4:A
现在我要查询Z中包含有A或者B或者C的记录:
select Z from TABLE1 where Z like '%A%' or Z like '%B%' or Z like '%C%'。其中记录1匹配3个,记录2匹配2个,记录3匹配2个,记录4匹配1个。怎么才能产生的排序是按匹配的多少排列的?

------解决方案--------------------
select * from table1 order by 
(case when z like '%a%' then 1 else 0 end) +
(case when z like '%b%' then 1 else 0 end) +
(case when z like '%c%' then 1 else 0 end) +
(case when z like '%d%' then 1 else 0 end) desc