select ID,name from t1 where name like'%重庆%' or name like'%沙坪坝%' or name like'%中国%' 结果按搜索条件顺序进行排序该怎么做

解决方案 »

  1.   

    select ID,name 
    from t1 
    where name like'%重庆%' or name like'%沙坪坝%' or name like'%中国%' 
    order by case when charindex('重庆',name) > 0 then 0 
                  when charindex('沙坪坝',name) > 0 then 1
                  when charindex('中国',name) > 0 then 2 else 3 end           
      

  2.   

    满足三个条件的排最前面,满足两个条件的紧随其后,然后name包含重庆的再紧随其后,以此类推?
    能实现吗??该怎么做?
      

  3.   

    谢谢 happyflystone 的答案
    但是,不能完全实现我要的结果。。
    能有更好点的办法吗
      

  4.   

    select ID,name 
    from t1 
    where name like'%重庆%' or name like'%沙坪坝%' or name like'%中国%' 
    order by case when charindex('重庆',name) > 0 then 1 else 0 end +
             case when charindex('沙坪坝',name) > 0 then 1 else 0 end +
             case when charindex('中国',name) > 0 then 1 else 0 end  desc