2012-09-24 88 views
0

我在Oracle中练习一些示例,因为我对它很陌生。我想要显示匹配到第一个WHERE子句的开始行和最后匹配的最后匹配的WHERE子句行。如何显示Oracle搜索结果?

CREATE table demo(id int, name varchar(50), city varchar(20), zip varchar(20)); 
    insert into demo values(1,'oliver71','munich','85716'); 

    insert into demo values(2,'markus71','munich','85716'); 
    insert into demo values(3,'oliver81','stuttgart','70024'); 
    insert into demo values(4,'peter82','hale','81978'); 
    insert into demo values(5,'chinnarose71','rosenheim','80324'); 
    insert into demo values(6,'guru11','berlin','81982'); 
    insert into demo values(7,'sachin51','frankfurt','00712'); 

    select name, city, zip from demo where zip like '%7%' OR city LIKE '%7%' 
    OR name LIKE '%7%'; 

我该如何在Oracle中做到这一点。任何建议将不胜感激。

回答

3

查询中没有“WHEN”子句。我假设你是指WHERE子句的部分。

要做到这一点,您需要一种排序结果的方式。下面是使用子查询的一种方法,我认为这可能是最清楚的:

select name, city, zip 
from (select name, city, zip, 
      (case when zip like '%7%' then 1 
        when city LIKE '%7%' then 2 
        when name LIKE '%7%' then 3 
        else 0 
       end) as matchitem 
     from demo 
    ) d 
where matchitem > 0 
order by matchitem