小编典典

Oracle SQL:从IN子句检索不存在的值

sql

有以下查询:

select table_name
from user_tables
where table_name in ('A','B','C','D','E','F');

假设仅存在user_tables记录B,C和F,我想检索不存在的值A,D和E。这是一个简单的示例,在现实世界中,列表可能很大。


阅读 151

收藏
2021-04-14

共1个答案

小编典典

生成伪造行的一种好方法是使用标准集合,例如sys.odcivarchar2list

select
    tables_to_check.table_name,
    case when user_tables.table_name is null then 'No' else 'Yes'end table_exists
from
(
    select column_value table_name
    from table(sys.odcivarchar2list('does not exist', 'TEST1'))
) tables_to_check
left join user_tables
    on tables_to_check.table_name = user_tables.table_name
order by tables_to_check.table_name;


TABLE_NAME       TABLE_EXISTS
----------       ------------
TEST1            Yes
does not exist   No
2021-04-14