Oracle SQL - finde die Werte NICHT in einer Tabelle

7

Nehmen Sie diese Tabelle WORDS

%Vor%

Und diese Liste:

%Vor%

Wie gebe ich eine Liste von Wörtern zurück, die NICHT in der Wörter-Tabelle stehen, aber in meiner Liste sind?

Wenn ich eine Tabelle habe, die "alle möglichen Wörter enthält", kann ich tun:

%Vor%

Allerdings habe ich keine solche Tabelle. Wie sonst kann das gemacht werden?

Auch das Erstellen einer neuen Tabelle ist keine Option, da ich diese Zugriffsebene nicht habe.

    
Jeremy 03.04.2012, 15:44
quelle

3 Antworten

26

Statt die Listenwerte hart in Zeilen zu codieren, verwenden Sie DBMS_DEBUG_VC2COLL , um Ihre begrenzte Liste dynamisch in Zeilen zu konvertieren. Verwenden Sie dann den Operator MINUS , um Zeilen in der zweiten Abfrage zu entfernen, die nicht in der ersten Abfrage enthalten sind:

%Vor%     
Wolf 03.04.2012, 16:03
quelle
5

Sie können Ihre Liste in eine Ansicht wie diese umwandeln:

%Vor%

Dann können Sie daraus auswählen:

%Vor%

Vielleicht nicht so eine Lösung, wie Sie es sich erhofft haben könnten ...

Sie sagen, dass Sie nicht über ausreichende Berechtigungen zum Erstellen von Tabellen verfügen. Daher können Sie vermutlich auch keine Typen erstellen. Wenn Sie jedoch in Ihrer Datenbank einen geeigneten Typ "herumliegen" finden, können Sie Folgendes tun:

%Vor%

Hier ist table_of_varchar2_type der Name eines Typs, der wie folgt definiert ist:

%Vor%

Ein solcher Typ, den Sie wahrscheinlich finden können, ist SYS.KU$_VCNT , was eine TABELLE VON VARCHAR2 (4000) ist.

    
Tony Andrews 03.04.2012 15:52
quelle
4

Versuchen Sie diese Lösung:

%Vor%     
denied 03.04.2012 15:52
quelle

Tags und Links