Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

sql - consulta única para retornar valores que não estão presentes


Se estiver usando 10g ou superior, você pode construir uma função que converte uma string CSV em uma tabela dinâmica. Confira o código para um tokenizador de string em esta outra resposta .

Você usaria assim:
select * from movies
where title NOT in (
         select * 
          from table (string_tokenizer
                      (
                          'Scream, Scary Movie,Exorcist,Dracula,Saw,Hide and Seek'
                        )

                  )
     )
/

Aqui está uma implementação um pouco mais simples que não requer nenhuma infraestrutura adicional:
SQL> select * from table(sys.dbms_debug_vc2coll('Scream',
'Scary Movie',
'Exorcist',
'Dracula',
'Saw',
'Hide and Seek'
 ))
/
  2    3    4    5    6    7    8  
COLUMN_VALUE
--------------------------------------------------------------------------------
Scream
Scary Movie
Exorcist
Dracula
Saw
Hide and Seek

6 rows selected.

SQL> 

Isso é semelhante a construtor de valor de tabela , mas só funciona para "tabelas" de coluna única.