0

我正在练习 Oracle 中的一些示例,因为我是新手。我想在下表的开头显示与第一个 WHERE 子句匹配的行,并在下表的最后显示最后匹配的 WHERE 子句行。

  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 中做到这一点。任何建议将不胜感激。

4

1 回答 1

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
于 2012-09-24T20:23:20.997 回答