首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL里多关键词查询怎么把匹配得最多的列在最前面

2012-01-22 
SQL里多关键词查询如何把匹配得最多的列在最前面?比方有个表TABLE1,里面有个字段是Z,记录1:ABCD,记录2:ACD

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

热点排行