oracle sql: проверить лиц в списке значений на наличие в таблице - PullRequest
2 голосов
/ 20 мая 2011

Кто-то прислал мне список с кодами, и мне нужно проверить, существует ли каждый код в таблице базы данных Oracle 10.

список выглядит примерно так:

code1, code2, code3

Конечно, для каждого элемента в списке, который я могу сделать

select id from my_table where code = 'code1'.

Но это заняло бы много времени и не очень изящно. Я хотел бы сообщить список, как:

code1        present
code2        X
code3        X
code4        present

Я смутно осведомлен об операторе With в Oracle, но я не уверен, как использовать его со списком значений вместо подзапроса.

1 Ответ

4 голосов
/ 20 мая 2011

Обратное может быть достигнуто следующим образом (посмотрите все коды из базы данных и проверьте, есть ли они в списке, предоставленном вашим коллегой):

select code, case when code in ('code1', 'code2', 'code3') 
                  then 'present' 
                  else 'X' end
from my_table;

Если это не сработает, вы можете попробовать это:

-- you need a special type for your request. Adapt dimensions if necessary
create type codes as varray(100) of varchar(100);

select c.column_value, case when exists (
  select 1 
  from my_table m 
  where m.code = c.column_value
) then 'present' else 'X' end
from table(codes('code1', 'code2', 'code3')) c;

-- drop that type again
drop type codes;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...