0

私はOracleに慣れていないので、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句の一部を意味していると思います。

これを行うには、結果を並べ替える方法が必要です。これがサブクエリを使用する1つの方法であり、これが最も明確だと思います。

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 に答える