Oracle
 sql >> Base de données >  >> RDS >> Oracle

sql - requête unique pour renvoyer des valeurs qui ne sont pas présentes

Si vous utilisez 10g ou supérieur, vous pouvez créer une fonction qui convertit une chaîne CSV en un tableau dynamique. Découvrez le code d'un générateur de jetons de chaîne dans cette autre réponse .

Vous l'utiliseriez comme ceci :

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

                  )
     )
/

Voici une implémentation un peu plus simple qui ne nécessite aucune infrastructure supplémentaire :

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> 

Ceci est similaire à le constructeur de valeur de table , mais cela ne fonctionne que pour les "tables" à une seule colonne