有这样的一条语句:
select t.* from sys_t_web_index t where 
index_content like '%中国海岸花园%' 
or index_content like '%海岸花园%' 
or index_content like '%中国%' 
or index_content like '%海岸%' 
or index_content like '%花园%' 通过or以后的条件,出来都结果排序很凌乱,不是按照匹配最大的排列在前面.
如何修改这个语句,使匹配'%中国海岸花园%' 的排前面,'%海岸花园%' 居后,后面的其次排列..

解决方案 »

  1.   

    select t.* from sys_t_web_index t where 
    index_content like '%中国海岸花园%' 
    or index_content like '%海岸花园%' 
    or index_content like '%中国%' 
    or index_content like '%海岸%' 
    or index_content like '%花园%' 
    order by
      case when index_content like '%中国海岸花园%' then 1
       when index_content like '%海岸花园%' then 2
       when index_content like '%中国%' then 3
       when index_content like '%海岸%' then 4
       end;
      

  2.   

    你的条件有写多余可以简炼为select t.* from sys_t_web_index t where 
    index_content like '%中国%' 
    or index_content like '%海岸%' 
    or index_content like '%花园%' 
      

  3.   

    select * from 
    (
    select t.*,1 as id from sys_t_web_index t where 
    index_content like '%中国海岸花园%'
    union 
    select t.*,2 as id from sys_t_web_index t where 
    index_content like '%海岸花园%' 
    union
    select t.*,3 as id from sys_t_web_index t where 
    index_content like '%中国%' 
    union
    select t.*,4 as id from sys_t_web_index t where 
    index_content like '%海岸%' 
    union
    select t.*,5 as id from sys_t_web_index t where 
    index_content like '%花园%'
    ) a
    order by id
      

  4.   

    在oracle里不能运行哦
    提示:缺少关键字
      

  5.   

    在oracle里不能运行哦 
    提示:缺少关键字
      

  6.   

    select * 
    from ( select t.*,
           case
                  when index_content like '%中国海岸花园%' then
                   1
                  when index_content like '%海岸花园%' then
                   2
                  when index_content like '%中国%' then
                   3
                  when index_content like '%海岸%' then
                   4
                  when index_content like '%花园%' then
                   5
              else 6  end  as rn
        from sys_t_web_index t
       where index_content like '%中国海岸花园%'
          or index_content like '%海岸花园%'
          or index_content like '%中国%'
          or index_content like '%海岸%'
          or index_content like '%花园%')a1
    order by a1.rn-- 执行结果如下
    1 中国海岸花园 1
    2 海岸花园 2
    3 中国海岸 3
    4 中国 3
    5 中国3 3
    6 1中国海岸2 3
    7 中国1 3
    8 中国2 3
    9 海岸1 4
    10 海岸 4
    11 花园 5