2012-09-24 3 views
0

저는 오라클에서 새로운 예제로 연습하고 있습니다. 첫 번째 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%'; 

어떻게 그렇게 할 수 있습니까? 어떤 제안이라도 대단히 감사하겠습니다.

답변

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 
관련 문제