Отфильтруйте недействительные идентификаторы из списка строк как для oracle, так и для postgres - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть список идентификаторов в качестве входных данных

id1, id2 ,id3, id5, id6

В моей таблице

id1, id2, id3, id6 

Ожидаемый результат id5

Мне нужен один запрос, совместимый с Postgres и Oracle

1 Ответ

0 голосов
/ 11 февраля 2020

Если вход является строкой, а ваша таблица имеет строковые идентификаторы, то вы можете использовать следующий запрос в Oracle.

SQL>
SQL> with ids as (
  2  select trim(regexp_substr('id1, id2 ,id3, id5, id6','[^,]+', 1, level)) ids from dual
  3     connect by regexp_substr('id1, id2 ,id3, id5, id6', '[^,]+', 1, level) is not null
  4  ),
  5  my_table_ids as
  6  (select trim(regexp_substr('id1, id2, id3, id6','[^,]+', 1, level)) ids from dual
  7     connect by regexp_substr('id1, id2, id3, id6', '[^,]+', 1, level) is not null)
  8  select ids from ids
  9  minus
 10  select ids from my_table_ids;

IDS
-----------
id5

SQL>

Cheers !!

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